2.2.2 保存オプションの指定(PDF/Aへの変換)

FixUpPDFASetSaveOption_Top

狙い・効果

PDF/APDF/Aへ変換の際に保存オプションを指定し、リニアライズ処理をして保存するかどうかを選択します。

参考

リニアライズ処理の詳細な仕様:Annex F, "Linearized PDF", ISO 32000-1 : 2008

処理の概要

PDF/Aへの変換の際にリニアライズに関する保存オプションを指定します。

『PDF Tool API』のPDF/A変換では、保存オプションとして再構築(デフォルト)とリニアライズが選択できます。増分更新(Cookbook第4巻「6.1 文書の保存形態の種類」参照)については、変換元PDFに準拠していない箇所があるとそのまま残るため、選択できません。

サンプルプログラムでは、「2.1.1 PDF/A-1b、PDF/A-2bへの変換」のPDF/A変換に加えてリニアライズ処理をするか、デフォルトの形式で保存するかを選択します。

『PDF Tool API』の主な機能

表2.2 PtlPDFFixUp.SAVE_OPTIONで指定可能な項目
列挙型定数
説明
SAVE_LINEARIZE
リニアライズ
SAVE_RECONSTRUCT
再構築(デフォルト)

プログラム例

package cookbook;

import jp.co.antenna.ptl.*;

public class FixUpPDFASetSaveOption {

    // そのクラスの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");
        System.out.println("保存時のオプション");
        System.out.println("0 : デフォルト  1 : リニアライズする");
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        if (args.length < 4) {
            printUsage();
            return;
        }

        int kind;
	...【FixUpPDFA.javaと同じ処理のため省略
	   ・PDF/Aの種類を指定するint型変数kindの値の判定・取得】...

        boolean setLinearize;
        try {
            setLinearize = readBoolArgs(args[3],
                                  "保存時のオプションには、0または1の数値を指定してください。");

        }
        catch (IllegalArgumentException ex) {
            System.out.println(ex.getMessage());
            printUsage(); // usageメッセージの表示
            return;
        }

        // コマンドライン引数の取得
        try (PtlParamInput inputFile = new PtlParamInput(args[0]);
             PtlParamOutput outputFile = new PtlParamOutput(args[1]);
             PtlPDFFixUp fixUp = new PtlPDFFixUp()) {

            if(setLinearize){
                // リニアライズする
                fixUp.setSaveOption(PtlPDFFixUp.SAVE_OPTION.SAVE_LINEARIZE);
            }else{
                //デフォルト
                fixUp.setSaveOption(PtlPDFFixUp.SAVE_OPTION.SAVE_RECONSTRUCT);
            }

            // 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;
            }

	...【FixUpPDFA.javaと同じ処理のため省略
	   ・PtlPDFFixUpErrorのエラー処理】...

            // ファイルに保存します。
            fixUp.save(outputFile);
        }
	...【GetPDFVersion.javaと同じ処理のため省略
	   ・エラーメッセージ処理と出力】...
    }

    /**
     * 0または1を入力されたargsにより、trueまたはfalseを返すメソッド。
     * 
     * @param args 与えられるコマンドライン引数。0または1でtrueまたはfalseを指定する。
     * @param errorMessage argsが0か1でなかった場合に出力されるエラーメッセージを指定する。
     * @return argsの数値を読み取った結果を戻す
     * @throws java.lang.IllegalArgumentException argsが0か1でなかった場合に発生。
     */
    public static boolean readBoolArgs(String args, String errorMessage)
        throws IllegalArgumentException {
        boolean trueOrFalse = false;

        // argsの読み取り
        switch(args) {
        case "0":
            trueOrFalse = false;
            break;
        case "1":
            trueOrFalse = true;
            break;
        default:
            throw new IllegalArgumentException(errorMessage);
        }

        return trueOrFalse;
    }
}

プログラムファイル名

FixUpPDFASetSaveOption.java

入出力操作の例

C:\samples>java cookbook.FixUpPDFASetSaveOption 
usage: java FixUpPDFA in-pdf-file out-pdf-file PDF/Aの種類 保存時のオプション

PDF/Aの種類
1 : PDF/A-1b  2 : PDF/A-2b
保存時のオプション
0 : デフォルト  1 : リニアライズする

C:\samples>java cookbook.FixUpPDFASetSaveOption testPages_10.pdf Output_FixupPDFA-1bLinearized.pdf 1 1 
-- 完了 --

この操作例では入力PDFをPDF/A-1bへ変換し、リニアライズ保存しています。