複数のPDF文書を結合して、1つのPDF文書として保存します。
2つのPDF文書を指定した順番に結合します。結合に際して、PDFに注釈やフォーム、しおり、添付ファイルなどがあったとき、それらをともに結合するかどうか(結合のオプション)の選択ができます。
append(const PtlPDFDocument doc, int fromNum, int numPages, intparam)の引数には、追加するPDF、追加するページの開始、追加するページ数、結合のオプションを指定します。結合のオプションは次の論理和です。
オプション | 説明 |
---|---|
OPTION_NONE | オプションはありません。 |
OPTION_EXECPT_ANNOTS | 注釈を除外してページ挿入します。 |
OPTION_EXCEPT_FORMS | フォームを除外してページ挿入します。 |
OPTION_COPY_OUTLINES | ページ挿入時にあわせてしおりをコピーします。他PDFのページ挿入時に有効となります。 |
OPTION_COPY_ATTACHEDFILES | ページ挿入時にあわせて添付ファイルをコピーします。添付ファイルは文書に添付されているものを指し、注釈に添付されているものは対象とはしません。 |
package cookbook; import jp.co.antenna.ptl.*; public class AppendPages { /** * @param args the command line arguments */ public static void main(String[] args) { if (args.length < 3) { System.out.println("usage: java AppendPages in-pdf-file out-pdf-file append-pdf-file"); return; } try (PtlParamInput inputFile = new PtlParamInput(args[0]); PtlParamOutput outputFile = new PtlParamOutput(args[1]); PtlPDFDocument doc = new PtlPDFDocument()) { // PDFファイルをロード doc.load(inputFile); try (PtlPages pages = doc.getPages()) //ページコンテナの取得 { try (PtlParamInput appendFile = new PtlParamInput(args[2]); PtlPDFDocument doc_app = new PtlPDFDocument()) { // 追加するPDFファイルをロードします。 doc_app.load(appendFile); // ページの追加(1P目から全頁) OPTION_COPY_OUTLINES = 0x00000004 /* ページ挿入時にあわせてしおりをコピーします。他PDFのページ挿入時に有効となります。 */ pages.append(doc_app, 0, PtlPages.PAGE_ALL, PtlPages.OPTION_COPY_OUTLINES); } } // ファイルに保存します。 doc.save(outputFile); } catch (PtlException pex) { System.out.println("PtlException : ErrorCode = " + pex.getErrorCode() + "\n " + pex.getErrorMessage()); } catch (Exception ex) { System.out.println(ex.getMessage()); ex.printStackTrace(); } catch (Error ex) { System.out.println(ex.getMessage()); ex.printStackTrace(); } finally { System.out.println("-- 完了 --"); } } }
AppendPages.java
この例では、tagged-pdf-part1.pdfとtagged-pdf-part2.pdfを入力して、tagged-pdf-joined.pdfを作成しています。なお、2つの入力PDFにしおりが設定されています。「OPTION_COPY_OUTLINES」により、出力PDFには、図のように2つのしおりを結合したしおりがつきます。