PDFファイルに添付されているファイルを削除PDFファイルに添付されているファイルを削除します。
PDFドキュメントに埋め込まれた添付ファイルを削除できます。ファイルを指定して削除する他、埋め込まれた全てのファイルを一括で削除することもできます。
本サンプルプログラムでは、入力PDFドキュメントに埋め込まれた添付ファイルについて、インデックス番号で指定した添付ファイル、または全てのファイルを削除し、新たなPDFドキュメントとして出力します。
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 -- 完了 --