PDFに設定された日付更新日付・作成日付の有効性を確認しながら取得します。
PtlDate.isValid()はPDFから取得した日時の有効性チェックにも使用できます。
PDFに作成日時や更新日時が設定されていなかった場合、そのPDFから作成日時や更新日時を取得しようとしても無効な日付を取得してしまいます。
例えば取得した作成日時を別のPDFの作成日時にコピーしようと設定不可能な値を無理に処理すると、プログラムはエラーコード200[Invalid parameter value]の例外を起こして停止します。
そこで、getCreationDateやgetModDateで取得したPtlDateに対してPtlDate.isValid()を実行することで無効な日付データを処理してしまうのを未然に防ぎます。
サンプルプログラムでは、入力PDFのプロパティから作成日時・更新日時を読み取って表示します。この際、取得した日時が有効なものかどうかを判定し、無効な日時だった場合は日付ではなく無効であった旨を表示します。
package cookbook; import jp.co.antenna.ptl.*; public class GetDocInfoWithValidationDate { // そのクラスのusageを表示する関数 private static void printUsage() { System.out.println("usage: java GetDocInfoWithValidationDate 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の文書情報 // 作成日付を取得 try (PtlDate dateCreate = docinf.getCreationDate()) { if(dateCreate.isValid()){ //CreationDateの有効性チェック System.out.println("CreationDate : " + dateCreate.getYear() + "/" + dateCreate.getMonth() + "/" + dateCreate.getDay() + " " + dateCreate.getHour() + ":" + dateCreate.getMin() + ":" + dateCreate.getSec()); }else{ System.out.println("このPDFは有効なCreationDateを持っていません"); } } // 更新日付を取得 try (PtlDate dateMod = docinf.getModDate()) { if(dateMod.isValid()){ System.out.println("ModDate : " + dateMod.getYear() + "/" + dateMod.getMonth() + "/" + dateMod.getDay() + " " + dateMod.getHour() + ":" + dateMod.getMin() + ":" + dateMod.getSec()); }else{ System.out.println("このPDFは有効なModDateを持っていません。"); } } } } ...【GetPDFVersion.javaと同じ処理のため省略 ・エラーメッセージ処理と出力】... } }
GetDocInfoWithValidationDate.java
C:\samples>java cookbook.GetDocInfoWithValidationDate usage: java GetDocInfoWithValidationDate in-pdf-file C:\samples>java cookbook.GetDocInfoWithValidationDate sample_withNullDate.pdf このPDFは有効なCreationDateを持っていません ModDate : 2024/1/10 16:29:28 -- 完了 --
この操作例では入力PDFに作成日が登録されていないPDFを使用しています。このPDFを読み込ませるとCreation Dateが不正になるため有効なCreation Dateを持っていないというメッセージが表示されます。