PDFドキュメントに添付されている添付ファイルの情報を取得します。
PDF Tool APIでは、PDFドキュメントに埋め込まれた添付ファイルは以下の手順で扱われます。まず、そのPDFドキュメントが持っている添付ファイルのコンテナを取得します。その後、添付ファイルのコンテナから各添付ファイルを表すクラスを取得します。どの添付ファイルを取得するかは、添付ファイルがPDFに埋め込まれている順序でつけられたインデックス番号を指定することで行います。
取得できる情報は、PDFドキュメントに埋め込まれた添付ファイルの数、添付ファイルそれぞれにつけられた名前です。
本サンプルプログラムでは、入力PDFを指定すると、そのPDFに埋め込まれた添付ファイルの総ファイル数とそれぞれに振られたインデックス番号ごとのファイル名を表示します。総ファイル数の情報は添付ファイルのコンテナから、各ファイル名はそれぞれの添付ファイルのクラスから取得します。
package cookbook; import jp.co.antenna.ptl.*; public class GetEmbedFileInfo { // そのクラスのusageを表示する関数 private static void printUsage() { System.out.println("usage: java GetEmbedFileInfo in-pdf-file"); } /** * @param args the command line arguments */ public static void main(String[] args) { if (args.length < 1) { printUsage(); return; } try (PtlParamInput inputFile = new PtlParamInput(args[0]); PtlPDFDocument doc = new PtlPDFDocument()) { // PDFファイルをロード doc.load(inputFile); // 添付ファイルコンテナの取得 try (PtlEmbeddedFiles embeddedFiles = doc.getEmbeddedFiles()) { // 添付ファイルコンテナが空かどうか if (embeddedFiles.isEmpty()) { System.out.println("添付ファイルコンテナは空"); return; } // 添付ファイル数の取得 int numOfEmbeddedFile = embeddedFiles.getCount(); System.out.println("添付ファイル数 : " + numOfEmbeddedFile); for(int i=0; i<numOfEmbeddedFile; i++) { try (PtlEmbeddedFile embeddedfile = embeddedFiles.get(i)) { System.out.println("index num : " + i + " の添付ファイル名 : " + embeddedfile.getFileName()); } } } } ...【AppendAnnotStampDefault.javaと同じ処理のため省略 ・エラーメッセージ処理と出力】... } }
GetEmbedFileInfo.java
C:\samples>java cookbook.GetEmbedFileInfo usage: java GetEmbedFileInfo in-pdf-file C:\samples>java cookbook.GetEmbedFileInfo embeds.pdf 添付ファイル数 : 1 index num : 0 の添付ファイル名 : thepdf402.pdf -- 完了 --
入力PDFには、次図のように添付ファイル注釈(import.png)と添付ファイル(thepdf402.pdf)があります。本サンプルでは添付ファイルの情報のみを取得します。