PDF文書のページ周囲にページの余白を追加余白として断ち落とし領域と印刷用紙のサイズを追加します。
PDF文書で印刷サイズ(例えばA4)のとき、それを仕上がりサイズ(TrimBox)とし、周囲に幅3mmの断ち落とし領域(BleedBox)を設定します。さらに、指定した幅分外側に印刷用紙のサイズ(MediaBox)を設定します。表示領域(CropBox)をMediaBoxと同じ値にします。
この例では次の機能を使っています。
package cookbook; import jp.co.antenna.ptl.*; public class AddMargin { /** * @param args the command line arguments */ public static void main(String[] args) { if (args.length < 3) { System.out.println("usage: java AddMargin in-pdf-file out-pdf-file size-of-margin"); return; } ...【AppendPages.javaと同じ処理のため省略 ・PtlParamInputを用いてPtlPDFDocument docに入力PDFをロード ・PtlParamOutputを用いて出力PDF名を指定】... int numPages = doc.getPageCount(); System.out.println("全"+ numPages + "ページに余白を追加します。"); ...【RemovePages.javaと同じ処理のため省略 ・doc.getPages()メソッドを用いてPtlPages pagesにページコンテナを取得 ・ページコンテナが空だった場合にエラーを出力して終了】... for(int i = 0; i < numPages; i++) { // ページの取得 // PtlPages.get() のパラメータindexは0が先頭 try (PtlPage page = pages.get(i); PtlSize sizeOfPage = page.getSize())//サイズを取得 { float trimBoxWidth = sizeOfPage.getWidth(); float trimBoxHeight = sizeOfPage.getHeight(); float sizeOfMargin = Float.parseFloat(args[2]); float top, bottom, left,right; //TrimBox left = 0; bottom = 0; right = trimBoxWidth; top = trimBoxHeight; try(PtlRect trimBox = new PtlRect(left, bottom, right, top)) { //TrimBoxの設定 page.setTrimBox(trimBox); } //BleedBox left = left - 3; bottom = bottom - 3; right = right + 3; top = top + 3; try(PtlRect bleedBox = new PtlRect(left, bottom, right, top)) { //BleedBoxの値の設定 page.setBleedBox(bleedBox); } //MediaBox,CropBox left = left - sizeOfMargin; bottom = bottom - sizeOfMargin; right = right + sizeOfMargin; top = top + sizeOfMargin; try(PtlRect mediaBox = new PtlRect(left, bottom, right, top)) { //MediaBoxの設定 page.setMediaBox(mediaBox); //CropBoxの設定->MediaBoxと同じものを指定。 page.setCropBox(mediaBox); } } } ...【AppendPages.javaと同じ処理のため省略 ・PtlParamOutputを用いてPtlPDFDocument docの内容を出力 ・PtlException, Exception, Error を catchするエラー処理 ・finally文で"--完了--"と表示する処理】... } }
AddMargin.java
入力したPDF(左)と出力したPDF(右)を比較すると、周囲に余白が追加されていることが分かります。