PDF文書のページ境界の設定値を取得します。
入力されたPDF文書の各ページに設定されている境界値を取得して画面に表示します。
取得するのはPDF仕様が持つ境界値です。
PDFのページ境界はページ毎の設定です。ページ数が多い時は先頭の10ページ分だけ表示します。
この例では次の機能を使っています。
package cookbook; import jp.co.antenna.ptl.*; public class GetBoundary { /** * @param args the command line arguments */ public static void main(String[] args) { if (args.length < 1) { System.out.println("usage: java GetBoundary in-pdf-file"); return; } ...【GetPageCount.javaと同じ処理のため省略 ・PtlParamInputを用いてPtlPDFDocument docに入力PDFをロード】... // ページ数の取得 int numPages = doc.getPageCount(); System.out.println("ページ数:" + numPages); if(numPages > 10) { System.out.println("ページ数が10ページを超えています。"); System.out.println("ページ境界の値を表示するのは先頭10ページまでとなります。"); numPages = 10; } ...【RemovePages.javaと同じ処理のため省略 ・doc.getPages()メソッドを用いてPtlPages pagesにページコンテナを取得 ・ページコンテナが空だった場合にエラーを出力して終了】... for (int i = 0; i < numPages; i++) { // 読み込んだページの取得 try (PtlPage page = pages.get(i); PtlRect mediaBox = page.getMediaBox()) // 読み込んだページのMediaBox取得 { System.out.println("ページ:" + (i+1)); float top = mediaBox.getTop(); float bottom = mediaBox.getBottom(); float left = mediaBox.getLeft(); float right = mediaBox.getRight(); System.out.println("MediaBox の[top, bottom, left, right]は、"); System.out.println("[" + top +", " + bottom +", " + left +", " + right +"]です。"); if(page.hasCropBox()) { try(PtlRect cropBox = page.getCropBox()) { top = cropBox.getTop(); bottom = cropBox.getBottom(); left = cropBox.getLeft(); right = cropBox.getRight(); System.out.println("CropBox の[top, bottom, left, right]は、"); System.out.println("[" + top +", " + bottom +", " + left +", " + right +"]です。"); } } else { System.out.println("このページにはCropBoxはありません。"); } if(page.hasBleedBox()) { try(PtlRect bleedBox = page.getBleedBox()) { top = bleedBox.getTop(); bottom = bleedBox.getBottom(); left = bleedBox.getLeft(); right = bleedBox.getRight(); System.out.println("BleedBox の[top, bottom, left, right]は、"); System.out.println("[" + top +", " + bottom +", " + left +", " + right +"]です。"); } } else { System.out.println("このページにはBleedBoxはありません。"); } if(page.hasTrimBox()) { try(PtlRect trimBox = page.getTrimBox()) { top = trimBox.getTop(); bottom = trimBox.getBottom(); left = trimBox.getLeft(); right = trimBox.getRight(); System.out.println("TrimBox の[top, bottom, left, right]は、"); System.out.println("[" + top +", " + bottom +", " + left +", " + right +"]です。"); } } else { System.out.println("このページにはTrimBoxはありません。"); } if(page.hasArtBox()) { try(PtlRect artBox = page.getArtBox()) { top = artBox.getTop(); bottom = artBox.getBottom(); left = artBox.getLeft(); right = artBox.getRight(); System.out.println("ArtBox の[top, bottom, left, right]は、"); System.out.println("[" + top +", " + bottom +", " + left +", " + right +"]です。"); } } else { System.out.println("このページにはArtBoxはありません。"); } } } } } ...【GatPageCount.javaと同じ処理のため省略 ・PtlException, Exception, Error を catchするエラー処理 ・finally文で"--完了--"と表示する処理】... } }
GetBoundary.java
C:\samples>java cookbook.GetBoundary usage: java GetBoundary in-pdf-file C:\samples>java cookbook.GetBoundary CSS-Print-v4.pdf ページ数:140 ページ数が10ページを超えています。 ページ境界の値を表示するのは先頭10ページまでとなります。 ページ:1 MediaBox の[top, bottom, left, right]は、 [285.00003, 0.0, 0.0, 210.00002]です。 CropBox の[top, bottom, left, right]は、 [285.00003, 0.0, 0.0, 210.00002]です。 BleedBox の[top, bottom, left, right]は、 [274.00003, 10.999998, 10.999998, 199.0]です。 TrimBox の[top, bottom, left, right]は、 [271.0, 14.0, 14.0, 196.0]です。 ArtBox の[top, bottom, left, right]は、 [271.0, 14.0, 14.0, 196.0]です。 ...【以降は省略】...