文書プロパティに含まれる文書情報の取得
PDFが持つ文書プロパティから文書が持つ情報を取得できます。取得できる情報はタイトル、著者名、サブジェクト、キーワード、変換元のドキュメントを生成した準拠製品名、PDF変換を行った準拠製品名、作成日付、更新日付、そして準拠製品が独自に作成したカスタムプロパティです。
本サンプルプログラムでは、入力PDFの情報を表示します。表示する情報は、タイトル、著者名、サブジェクト、キーワード、変換元のドキュメントを生成した準拠製品名、PDF変換を行った準拠製品名、作成日付、更新日付、カスタムプロパティです。カスタムプロパティについては最初にその有無を確認し、ある場合にはそれぞれの名前と値を出力します。それぞれの情報は入力コンソール上に表示されます。
package cookbook; import jp.co.antenna.ptl.*; public class GetDocInfo { // そのクラスのusageを表示する関数 private static void printUsage() { System.out.println("usage: java GetDocInfo 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 (PtlDocProperty docProperty = doc.getDocProperty(); //PDFの文書プロパティ PtlDocInfo docinf = docProperty.getDocInfo(); //PDFの文書情報 // PDFのカスタムプロパティ PtlCustomProperties customProperties = docProperty.getCustomProperties()) { // タイトル取得 System.out.println("Title : " + docinf.getTitle()); // 著者取得 System.out.println("Author : " + docinf.getAuthor()); // サブジェクト取得 System.out.println("Subject : " + docinf.getSubject()); // キーワード取得 System.out.println("Keywords : " + docinf.getKeywords()); // クリエータ取得 System.out.println("Creator : " + docinf.getCreator()); // プロデューサ取得 System.out.println("Producer : " + docinf.getProducer()); // 作成日付を取得 try (PtlDate dateCreate = docinf.getCreationDate()) { System.out.println("CreationDate : " + dateCreate.getYear() + "/" + dateCreate.getMonth() + "/" + dateCreate.getDay() + " " + dateCreate.getHour() + ":" + dateCreate.getMin() + ":" + dateCreate.getSec()); } // 更新日付を取得 try (PtlDate dateMod = docinf.getModDate()) { System.out.println("ModDate : " + dateMod.getYear() + "/" + dateMod.getMonth() + "/" + dateMod.getDay() + " " + dateMod.getHour() + ":" + dateMod.getMin() + ":" + dateMod.getSec()); } // カスタムプロパティが空かどうか判定 System.out.println(""); if(customProperties.isEmpty()){ //空の場合はそう表示する System.out.println("このPDFにカスタムプロパティは設定されていません。"); }else { // カスタムプロパティが空でない場合に内容を取得する System.out.println("このPDFのカスタムプロパティを表示します。"); int propertiesNum = customProperties.getCount(); for(int i = 0; i < propertiesNum; i++){ System.out.println("Custom Property No." + (i+1) +":"); try(PtlCustomProperty customProperty = customProperties.get(i)){ System.out.println("名前 : " + customProperty.getName()); System.out.println("値 : " + customProperty.getValue()); System.out.println(""); } } } } } ...【AppendAnnotStampDefault.javaと同じ処理のため省略 ・エラーメッセージ処理と出力】... } }
GetDocInfo.java
C:\samples>java cookbook.GetDocInfo usage: java GetDocInfo in-pdf-file C:\samples>java cookbook.GetDocInfo annots.pdf Title : Author : Subject : Keywords : Creator : Antenna House ShunkanPDF Kakemasse 7 Producer : Antenna House PDF Output Library 2.6.0 (Windows) CreationDate : 2019/7/30 15:5:55 ModDate : 2019/12/2 18:59:38 このPDFにカスタムプロパティは設定されていません。 -- 完了 --