3.1.4 添付ファイルの削除

images/RemoveEmbeddedFile-top.png

狙い・効果

PDFファイルに添付されているファイルを削除PDFファイルに添付されているファイルを削除します。

処理の概要

PDFドキュメントに埋め込まれた添付ファイルを削除できます。ファイルを指定して削除する他、埋め込まれた全てのファイルを一括で削除することもできます。

本サンプルプログラムでは、入力PDFドキュメントに埋め込まれた添付ファイルについて、インデックス番号で指定した添付ファイル、または全てのファイルを削除し、新たなPDFドキュメントとして出力します。

PDF Tool APIの主な機能

プログラム例

package cookbook;

import jp.co.antenna.ptl.*;

public class RemoveEmbeddedFile {
    // そのクラスのusageを表示する関数
    private static void printUsage(){
        System.out.println("usage: java RemoveEmbeddedFile in-pdf-file" +
                           " out-pdf-file 削除するファイルの指定番号");
        System.out.println("削除するファイルの指定番号 :");
        System.out.println("0 : 添付ファイルの全削除" +
                           " その他の番号 : 数値で指定された添付ファイルの削除");
    }


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

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

            // 添付ファイルコンテナの取得
            try (PtlEmbeddedFiles embeddedFiles = doc.getEmbeddedFiles())
            {
                // 添付ファイルコンテナが空かどうか
                if (embeddedFiles.isEmpty())
                {
                    System.out.println("添付ファイルコンテナは空");
                    return;
                }

                // 添付ファイル数の取得
                int numOfEmbeddedFiles = embeddedFiles.getCount();
                System.out.println("添付ファイル数 : " + numOfEmbeddedFiles);

                // 注釈の削除判定
                switch (fileNumToRemove) {
                case 0:
                    //全添付ファイルの削除
                    embeddedFiles.removeAll();
                    break;
                default:
                    if(fileNumToRemove > numOfEmbeddedFiles) {
                        System.out.println("削除するファイルの指定番号は" +
                                           "添付ファイル数より小さい数を指定して下さい。");
                        return;
                    }
                    // 指定された添付ファイルの削除
                    // remove()メソッドのパラメータindexは0スタートのため、
                    // fileNumToRemoveから-1しています。
                    embeddedFiles.remove(fileNumToRemove -1);
                    break;
                }

            }

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

プログラムファイル名

RemoveEmbeddedFile.java

入出力操作の例

C:\samples>java cookbook.RemoveEmbeddedFile 
usage: java RemoveEmbeddedFile in-pdf-file out-pdf-file 削除するファイルの指定番号
削除するファイルの指定番号 :
0 : 添付ファイルの全削除 その他の番号 : 数値で指定された添付ファイルの削除

C:\samples>java cookbook.RemoveEmbeddedFile embeds.pdf remove-embed1.pdf 0 
添付ファイル数 : 1
-- 完了 --