2.3.1 PDF/A-1b,PDF/A-2bの準拠確認

ValidatePDFA_Top

狙い・効果

入力PDFがPDF/APDF/A-1bまたはPDF/A-2bに準拠しているかをチェックします。

処理の概要

PDF/A-1b、PDF/A-2b、どちらの規格の準拠チェックを行うかはvalidatePDFA()の実行時に指定します。

準拠チェック時にエラーが出た場合はPtlPDFFixUpError形式のエラーを出力します。エラー詳細は本書「付録:PtlPDFFixUpErrorのエラーコード一覧」を参照してください。

サンプルプログラムでは、入力PDFに対し、PDF/A-1b、PDF/A-2bの指定したバージョンへの準拠チェックを行います。

準拠チェックに失敗した場合は、出力されたエラーコードが持つエラーメッセージをコンソール上に表示します。エラーコードが複数の場合はエラーコードの数だけエラーメッセージを表示します。

『PDF Tool API』の主な機能

プログラム例

package cookbook;

import jp.co.antenna.ptl.*;

public class ValidatePDFA {

    // そのクラスのusageを表示する関数
    public static void printUsage() {
        System.out.println("usage: java ValidatePDFA in-pdf-file");
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        if (args.length < 1) {
            printUsage(); // usageメッセージの表示
            return;
        }

        // コマンドライン引数の取得
        try (PtlParamInput inputFile = new PtlParamInput(args[0]);
              PtlPDFFixUp fixUp = new PtlPDFFixUp()) {
            // PDFファイルを読み込んで鑑定する
            //PDF/A-1bであるかを判定する
            if(fixUp.validatePDFA(PtlPDFFixUp.PDFA_TYPE.PDFA_1B, inputFile)) {
                System.out.println("このPDFはPDF/A-1bに準拠しています");
            }else if(fixUp.validatePDFA(PtlPDFFixUp.PDFA_TYPE.PDFA_2B, inputFile)) {
                System.out.println("このPDFはPDF/A-2bに準拠しています");
            }else{
                System.out.println("このPDFはPDF/A-1b、PDF/A-2bのどちらにも準拠していません。");
                try(PtlPDFFixUpErrors fixUpErrors = fixUp.getErrors()) {
                    int numErrors = fixUpErrors.getCount();
                    for(int i = 0; i < numErrors; i++) {
                        try(PtlPDFFixUpError thisFixUpError = fixUpErrors.get(i)){
                            System.out.println("エラーその"+ i +":"+ thisFixUpError.getErrorMessageJP());
                        }
                    }
                }
            }

        }
	...【GetPDFVersion.javaと同じ処理のため省略
	   ・エラーメッセージ処理と出力】...
    }
}

プログラムファイル名

ValidatePDFA.java

入出力操作の例

C:\samples>java cookbook.ValidatePDFA 
usage: java ValidatePDFA in-pdf-file

C:\samples>java cookbook.ValidatePDFA Output_FixupPDFA-1b.pdf 
このPDFはPDF/A-1bに準拠しています
-- 完了 --

C:\samples>java cookbook.ValidatePDFA Output_FixupPDFA-2b.pdf 
このPDFはPDF/A-2bに準拠しています
-- 完了 --

C:\samples>java cookbook.ValidatePDFA Output_FixupPDFA-1bLinearized.pdf 
このPDFはPDF/A-1bに準拠しています
-- 完了 --

C:\samples>java cookbook.ValidatePDFA Output_FixupPDFA-2bLinearized.pdf 
このPDFはPDF/A-2bに準拠しています
-- 完了 --

この出力例では、本章の第1節で出力した各PDFの準拠確認を行っています。準拠チェックに失敗した場合は以下のようにエラーコードが表示されます。

C:\samples>java cookbook.ValidatePDFA sample_InvalidPDFA-1b.pdf 
このPDFはPDF/A-1b、PDF/A-2bのどちらにも準拠していません。
エラーその0:PDF/Aバージョンが正しくない
-- 完了 --