PDF文書から指定した範囲のPDF文書のページを削除ページを削除します。
PDF文書と削除するページ範囲を入力します。
PDF文書の中から指定したページ範囲を削除(パラメータの指定で全ページの削除ができますが、全てのページを削除しただけでは、PDFとして成り立たないのでエラーとなります。全ページ削除は文書情報などを引き継いだ新しいPDFを作成するときなどに使います。)して、新しいPDF文書として保存します。
この例では次の機能を使っています。
package cookbook; import jp.co.antenna.ptl.*; public class RemovePages { /** * @param args the command line arguments */ public static void main(String[] args) { if (args.length < 3) { System.out.println("usage: java RemovePages in-pdf-file out-pdf-file remove-start-page remove-end-page"); System.out.println("remove-start-pageに\ "0\ "を入力した場合、\ "全ページの消去\ "を実行します。"); System.out.println("ただし、全てのページを削除したらPDFとして成り立たないため、エラーとなります。"); return; } int removeStart = Integer.parseInt(args[2]); if(removeStart < 0) { System.err.println("remove-start-page には0以上の値を入力してください。"); System.err.println("usage: java RemovePages in-pdf-file out-pdf-file remove-start-page remove-end-page"); System.err.println("remove-start-pageに\ "0\ "を入力した場合、\ "全ページの消去\ "を実行します。"); System.out.println("ただし、全てのページを削除したらPDFとして成り立たないため、エラーとなります。"); return; } ...【AppendPages.javaと同じ処理のため省略 ・PtlParamInputを用いてPtlPDFDocument docに入力PDFをロード ・PtlParamOutputを用いて出力PDF名を指定】... // ページ数の取得 System.out.println("ページ数:" + doc.getPageCount()); try (PtlPages pages = doc.getPages()) //ページコンテナの取得 { // ページコンテナが空かどうか if (pages.isEmpty()) { System.err.println("ページコンテナが空"); return; } //削除処理 if(removeStart == 0) //removeAll の指定。 { pages.removeAll(); // このままsaveするとエラーになります } else { //削除ページ数の算出 int removeEnd = Integer.parseInt(args[3]); int pagesToRemove = removeEnd - removeStart + 1; if(pagesToRemove <= 0) { System.err.println("remove-end-page は remove-start-page より小さい値は指定できません。"); return; } //ページの削除 //PtlPages.remove() のパラメータindexは0スタートのため、removeStartから-1しています。 pages.remove(removeStart - 1, pagesToRemove); } ...【AppendPages.javaと同じ処理のため省略 ・PtlParamOutputを用いてPtlPDFDocument docの内容を出力 ・PtlException, Exception, Error を catchするエラー処理 ・finally文で"--完了--"と表示する処理】... } }
RemovePages.java