PDFのページサイズと用紙規格
ページサイズは、その後のほぼすべての判断が依存する唯一の属性でありながら、日常的に読み違えられています。この記事では、PDFがページをどう測っているか、実際に遭遇する規格、そして1つの文書に複数のサイズが混在する理由を扱います。
ページはピクセルではなくポイントで測られる
PDFのページに解像度はありません。1ポイント=1/72インチという単位で記述され、ページ上のすべてはその座標系に配置されます。PDFがどの倍率で見ても同じようにくっきり見えるのはこのためで、誰かが描画すると決めるまでピクセルは存在しません。
つまり「このページは何ピクセルか」という問いには、解像度を選ぶまで答えがありません。ページは物理的な寸法であり、ピクセルは描画側が解像度を決めた瞬間に初めて現れます。A4はスマートフォンで見ようと印刷機に送ろうと8.3×11.7インチです。
ポイントは組版由来の単位なので、半端な小数になりがちです。A4は210×297ミリメートルで、ポイントに直すと595.28×841.89。インチで定義されたレターのほうは612×792と、きりのよい数字に収まります。
A判・B判・レター
ISOのA判は1つの規則だけで成り立っています。すべてのサイズが同じ縦横比を持ち、長辺を半分にすると1つ下のサイズになる、というものです。A0が1平方メートル、A1がその半分、と続いてA4の210×297ミリメートルに至ります。A4のレイアウトをA3に拡大しても余白の帯ができないのは、この比が一定だからです。
8.5×11インチのレターは北米の標準で、この体系には属しません。A4よりわずかに幅広く、明らかに丈が短いため、片方向けに組んだ文書をもう片方で扱うと、切れるか余白が出るかのどちらかになります。この差は画面上では見落とすほど小さく、印刷では台無しにするほど大きい。
B判はA判の中間に位置し、互換性のない2系統があります。ISO B5は176×250ミリメートル、日本で使われるJIS B5は182×257ミリメートルです。日本語の文書と海外のテンプレートでB5の寸法が食い違うのは、たいていこれが原因です。
1つの文書にサイズが混在する理由
PDFの仕様はページサイズの統一を要求していません。各ページが自分のサイズを持つため、複数の資料をまとめた報告書に、A4の本文とレターの表紙とA3の折り込みが同居することは普通に起こります。ビューアは各ページをウィンドウに合わせて拡縮するので、これをうまく隠してしまいます。
表面化するのは、印刷するとき、製本するとき、そして画像に変換するときです。サイズが混在していると出力画像のピクセル寸法もばらつき、揃ったサムネイルの組を作るつもりだった場合に困惑することになります。
横向きページがもう1つの落とし穴です。横向きのページは、実際に横長のページとしてではなく、縦向きページに回転フラグを付けた形で保存されていることが多く、保存されている寸法と目に見える寸法が入れ替わります。まともな描画系は回転を適用しますが、生の値を読むだけのコードは適用しないことがあります。
MediaBox・CropBox・TrimBoxと裁ち落とし
PDFのページは最大5つの矩形を定義できます。MediaBoxはファイル上の用紙全体。CropBoxはビューアが表示する領域で、通常はMediaBoxと同じですが小さいこともあります。TrimBoxは断裁後の仕上がりサイズ、BleedBoxは仕上がり線を越えて絵柄が伸びる、わずかに大きい領域です。
裁ち落としが必要なのは、断裁が完璧には揃わないからです。色のついた背景を仕上がりの端まで届かせたいなら、そこから数ミリ外まで描いておく必要があります。そうすれば刃が少しずれても白いスジが出ません。日本の印刷会社は通常3ミリ、北米の慣習は1/8インチです。
これが画像変換で効いてきます。多くの描画系はCropBoxを使いますが、入稿用ファイルのCropBoxには裁ち落としとトンボが含まれています。結果として、書き出された画像は仕上がりサイズより大きく、絵柄の周囲にトンボが写り込みます。それが望みでないなら、変換の後ではなく前にファイルを仕上がりサイズへ整える必要があります。
ページサイズをピクセル数に換算する
ポイントでのページサイズが分かれば、ピクセル数は選んだ解像度から決まります。1ポイントが1/72インチなので、72dpiで描画すると1ポイントが1ピクセルになり、他の解像度はそこからの比例です。A4は72dpiで595×842ピクセル、144dpiで1190×1684、350dpiで2894×4093になります。
この変換ツールでは、スケール設定がその倍率にあたります。1xが72dpi、2xが144dpiというように対応するので、出力のピクセル寸法はポイントでのページサイズにスケールを掛けた値そのものです。ページサイズを知っていれば、変換を押す前に結果が正確に分かります。