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
C:\samples>java cookbook.RemovePages usage: java RemovePages in-pdf-file out-pdf-file remove-start-page remove-end-page remove-start-pageに"0"を入力した場合、"全ページの消去"を実行します。 ただし、全てのページを削除したらPDFとして成り立たないため、エラーとなります。 C:\samples>java cookbook.RemovePages testPages_10.pdf removed-2-6.pdf 2 6 ページ数:10 -- 完了 --