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