7.2.2 カスタムプロパティの削除

images/RemoveCustomDocProperty-top.png

狙い・効果

カスタムプロパティを削除します。

処理の概要

PDFドキュメントに追加されたカスタムプロパティは削除できます。

削除するカスタムプロパティはインデックス番号を用いて個別に指定する他、全てを一括で削除することもできます。

本サンプルプログラムでは、入力PDFにあるカスタムプロパティを指定して削除したPDFドキュメントを出力します。何番目のカスタムプロパティを削除するか、もしくは全削除するかを数値で指定します。

PDF Tool APIの主な機能

プログラム例

package cookbook;

import jp.co.antenna.ptl.*;

public class RemoveCustomDocProperty {

    // そのクラスのusageを表示する関数
    private static void printUsage() {
        System.out.println("usage: java RemoveCustomDocProperty in-pdf-file out-pdf-file" +
                           " num-of-custom-prop");
        System.out.println("num-of-custom-prop : ");
        System.out.println("0 : カスタムプロパティを全削除");
        System.out.println(" 0以外の数値 : n番目に入っているカスタムプロパティを削除");
     }

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


        try (PtlParamInput inputFile = new PtlParamInput(args[0]);
             PtlParamOutput outputFile = new PtlParamOutput(args[1]);
             PtlPDFDocument doc = new PtlPDFDocument()) {
            // PDFファイルをロード
            doc.load(inputFile);

            try (PtlDocProperty docProperty = doc.getDocProperty(); //PDFの文書プロパティ
                 PtlCustomProperties customProperties  = docProperty.getCustomProperties()) {
                     // コマンドライン引数の指定と判定
                     int numToRemoveCustomProp = Integer.parseInt(args[2]);
                     if( customProperties.getCount() < numToRemoveCustomProp){
                         System.out.println("num-of-custom-prop はカスタムプロパティ数" +
                                            "より小さい値を指定してください。");
                         return;
                     }
                     // カスタムプロパティを削除
                     // 0のときは全て削除
                     if(numToRemoveCustomProp == 0){
                         customProperties.removeAll();
                     }else {
                         // 指定カスタムプロパティを削除
                         // (パラメータindexは0が先頭のため1を引く)
                         customProperties.remove(numToRemoveCustomProp - 1);
                     }

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

プログラムファイル名

RemoveCustomDocProperty.java

入出力操作の例

C:\samples>java cookbook.RemoveCustomDocProperty 
usage: java RemoveCustomDocProperty in-pdf-file out-pdf-file num-of-custom-prop
num-of-custom-prop : 
0 : カスタムプロパティを全削除
 0以外の数値 : n番目に入っているカスタムプロパティを削除

C:\samples>java cookbook.RemoveCustomDocProperty blank-setcustominfo.pdf remove-custominfo.pdf 1 
-- 完了 --