PDFのページの境界の意味、境界の再設定で余白を増やす

以前に、PDFの余白について次のような質問をいただいていました。

「基幹系システムが自動生成するPDFの帳票の左余白が不足しているため、生成されたPDF内の文書を自動的にたとえば右にシフトするなど、余白変更をバッチ処理的に行うことができる製品はありますか」

アンテナハウス・システム製品ナビゲータ 3. PDFデータ利用・PDFの編集

この質問に対する回答は、「いまの製品ではできません。開発課題とさせていただきます。」となっています(2018/3/23現在)。

しかし、現在作成している『PDFクックブック』(仮称)という本のサンプルをいろいろ作っていながら、「あ!できるじゃん」と思い当たりました。

PDF Tool API V5には、PDFの境界を設定する機能があります。

・setMediaBox メディアボックスを設定する
・setCropBox クロップボックスを設定する

メディアボックスとはPDF を印刷する媒体の物理的な境界です。最も外側の領域であり、内側にできあがりの判型の周囲にとられる裁ち落とし領域やトンボなども含みます。PDFの仕様としてメディアボックスの外側にあるオブジェクトは無視されます。

クロップボックスとは、出力媒体の上でPDF の内容を表示するユーザー空間の矩形領域を定義します。物理的な媒体とは対応付けられていません。デフォルト値はMediaBoxです。

PDFの座標系はx軸、y軸とも無限の長さを持っていて、原点 (0,0)の位置をどこに置いても構いません。回転していないPDFでは、メディアボックスやクロップボックスは左下角(x0,y0)と右上角(x1,y1)の座標により[x0 y0 x1 y1]と表現します。

メディアボックス・クロップボックスを左(x軸)にaだけシフトするには、次のように座標値を変更します。
[x0-a y0 x1-a y1]

『PDFクックブック』に掲載予定のサンプルプログラムで実際に試して見ます。
次のように設定します。


※このサンプルプログラムは一度に1つの境界値しか変更できません。サンプルなので不便ですが。

そうしますと変更前のPDFの本分領域:

が、変更後のPDFの本分領域:

となります。PDF Tool API V5でできてしまうんですね。

『PDFクックブック』初版は、4月22日開催の技術書典4にて販売する予定です。しばらくお待ちください。

本書はもちろんCAS-UBで制作しています。

ご参考:PDF Tool API V5