
文書プロパティに含まれる文書情報の取得
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にカスタムプロパティは設定されていません。 -- 完了 --