
入力PDFをPDF/APDF/Aへ変換します。
変換できるPDF/AのバージョンはPDF/A-1bまたはPDF/A-2bです。
変換時に準拠エラーが発生した場合は処理を停止し、PtlPDFFixUpError形式のエラーを出力します。
PtlPDFFixUpError形式のエラー詳細は本書「付録:PtlPDFFixUpErrorのエラーコード一覧」、クラスPtlPDFFixUpErrorの扱いや詳細については「2.2.1 PDF/A-1b,PDF/A-2bの準拠確認」をご覧ください。
サンプルプログラムでは入力したPDFをPDF/A変換し、指定した名前で出力します。変換するバージョンは引数で指定します。
コンソール上に、変換時に発生した準拠エラーの有無またはエラーの総数とそれらのエラーコードを表示します。
ここでは主に次の機能を使っています。
package cookbook;
import jp.co.antenna.ptl.*;
public class FixUpPDFA {
    // そのクラスのusageを表示する関数
    public static void printUsage() {
        System.out.print("usage: java FixUpPDFA in-pdf-file out-pdf-file");
        System.out.println(" PDF/Aの種類 \n");
        System.out.println("PDF/Aの種類");
        System.out.println("1 : PDF/A-1b  2 : PDF/A-2b");
    }
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        if (args.length < 2) {
            printUsage();
            return;
        }
        int kind;
        try {
            kind =  Integer.parseInt(args[2]);
            switch (kind) {
            case 1:
            case 2:
                break;
            default:
                System.out.println("PDF-Aの種類には、1または2の数値を指定してください。");
                printUsage(); // usageメッセージの表示
                return;
            }
        }
        catch(NumberFormatException numfe) {
            System.out.println("PDF-Aの種類には、1または2の数値を指定してください。");
            printUsage(); // usageメッセージの表示
            return;
        }
        // コマンドライン引数の取得
        try (PtlParamInput inputFile = new PtlParamInput(args[0]);
             PtlParamOutput outputFile = new PtlParamOutput(args[1]);
             PtlPDFFixUp fixUp = new PtlPDFFixUp()) {
            // PDFFixUPでinputFileをPDF/Aにする。
            switch (kind) {
            case 1: //PDF/A-1b
                fixUp.fixUpPDFA(PtlPDFFixUp.PDFA_TYPE.PDFA_1B, inputFile);
                break;
            case 2:
                // PDF/A-2b
                fixUp.fixUpPDFA(PtlPDFFixUp.PDFA_TYPE.PDFA_2B, inputFile);
                break;
            }
            //変換エラー発生チェック
            try(PtlPDFFixUpErrors fixUpErrors = fixUp.getErrors()) {
                int numErrors = fixUpErrors.getCount();
                System.out.println("変換時の総エラー数 : " + numErrors);
                if(numErrors == 0){
                    System.out.println("エラーは発生しませんでした。");
                }else {
                    for(int i = 0; i < numErrors; i++) {
                        try(PtlPDFFixUpError thisFixUpError = fixUpErrors.get(i)){
                            System.out.println("エラーその"+ i +":"+ thisFixUpError.getErrorMessageJP());
                        }
                    }
                }
            }
            // ファイルに保存します。
            fixUp.save(outputFile);
        }
	...【GetPDFVersion.javaと同じ処理のため省略
	   ・エラーメッセージ処理と出力】...
    }
}
FixUpPDFA.java
C:\samples>java cookbook.FixUpPDFA usage: java FixUpPDFA in-pdf-file out-pdf-file PDF/Aの種類 PDF/Aの種類 1 : PDF/A-1b 2 : PDF/A-2b C:\samples>java cookbook.FixUpPDFA testPages_10.pdf Output_FixupPDFA-1b.pdf 1 変換時の総エラー数 : 0 エラーは発生しませんでした。 -- 完了 -- C:\samples>java cookbook.FixUpPDFA testPages_10.pdf Output_FixupPDFA-2b.pdf 2 変換時の総エラー数 : 0 エラーは発生しませんでした。 -- 完了 --
この操作例ではPDF/A-1b、PDF/A-2bをそれぞれ出力しています。
