
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 -- 完了 --