PDF文書から指定した範囲のPDF文書のページを抽出ページを抽出して、新しいPDF文書として保存します。
この例では次の機能を使っています。
package cookbook; import jp.co.antenna.ptl.*; public class ExtractPages { /** * @param args the command line arguments */ public static void main(String[] args) { if (args.length < 4) { System.out.println("usage: java ExtractPage in-pdf-file out-pdf-file start-page end-page"); return; } int startPage = Integer.parseInt(args[2]); int endPage = Integer.parseInt(args[3]); int pagesToPrint = endPage - startPage + 1; if(pagesToPrint < 1) { System.err.println("ERROR: End-page number should be bigger than start-page number"); return; } ...【AppendPages.javaと同じ処理のため省略 ・PtlParamInputを用いてPtlPDFDocument docに入力PDFをロード ・PtlParamOutputを用いて出力PDF名を指定】... try (PtlDocProperty docproperty = doc.getDocProperty();// 文書プロパティの取得 PtlDocInfo docinfo = docproperty.getDocInfo(); // 文書情報の取得 PtlPDFDocument doc_ext = new PtlPDFDocument(); PtlDocProperty docproperty_ext = doc_ext.getDocProperty(); // 出力側文書プロパティの取得 PtlDocInfo docinfo_ext = docproperty_ext.getDocInfo(); // 出力側文書情報の取得 PtlPages pages_ext = doc_ext.getPages()) { // タイトルをコピー docinfo_ext.setTitle(docinfo.getTitle()); // 著者をコピー docinfo_ext.setAuthor(docinfo.getAuthor()); // サブジェクトをコピー docinfo_ext.setSubject(docinfo.getSubject()); // キーワードをコピー docinfo_ext.setKeywords(docinfo.getKeywords()); // クリエータをコピー docinfo_ext.setCreator(docinfo.getCreator()); // プロデューサをコピー docinfo_ext.setProducer(docinfo.getProducer()); // 作成日付をコピー try (PtlDate dateCreate = docinfo.getCreationDate()) { docinfo_ext.setCreationDate(dateCreate); } // 更新日付をコピー try (PtlDate dateMod = docinfo.getModDate()) { docinfo_ext.setModDate(dateMod); } // ページ挿入オプション // OPTION_COPY_OUTLINES = 0x00000004 ページ挿入時にあわせてしおりをコピーします。 // OPTION_COPY_ATTACHEDFILES = 0x00000008ページ挿入時にあわせて添付ファイルをコピーします。 int insertoption = PtlPages.OPTION_COPY_OUTLINES | PtlPages.OPTION_COPY_ATTACHEDFILES; // ページの追加 // PtlPages.append() のパラメータfromNumは0スタートのため、startPageから1引いています。 pages_ext.append(doc, startPage - 1, pagesToPrint, insertoption); ...【AppendPages.javaと同じ処理のため省略 ・PtlParamOutputを用いてPtlPDFDocument docの内容を出力 ・PtlException, Exception, Error を catchするエラー処理 ・finally文で"--完了--"と表示する処理】... } }
ExtractPages.java