
PDF文書から指定した範囲のPDF文書のページを抽出ページを抽出して、新しいPDF文書として保存します。
この例では次の機能を使っています。
package cookbook;
import jp.co.antenna.ptl.*;
public class ExtractPages {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
if (args.length < 4)
{
System.out.println("usage: java ExtractPage in-pdf-file out-pdf-file start-page end-page");
return;
}
int startPage = Integer.parseInt(args[2]);
int endPage = Integer.parseInt(args[3]);
int pagesToPrint = endPage - startPage + 1;
if(pagesToPrint < 1)
{
System.err.println("ERROR: End-page number should be bigger than start-page number");
return;
}
...【AppendPages.javaと同じ処理のため省略
・PtlParamInputを用いてPtlPDFDocument docに入力PDFをロード
・PtlParamOutputを用いて出力PDF名を指定】...
try (PtlDocProperty docproperty = doc.getDocProperty();// 文書プロパティの取得
PtlDocInfo docinfo = docproperty.getDocInfo(); // 文書情報の取得
PtlPDFDocument doc_ext = new PtlPDFDocument();
PtlDocProperty docproperty_ext = doc_ext.getDocProperty(); // 出力側文書プロパティの取得
PtlDocInfo docinfo_ext = docproperty_ext.getDocInfo(); // 出力側文書情報の取得
PtlPages pages_ext = doc_ext.getPages())
{
// タイトルをコピー
docinfo_ext.setTitle(docinfo.getTitle());
// 著者をコピー
docinfo_ext.setAuthor(docinfo.getAuthor());
// サブジェクトをコピー
docinfo_ext.setSubject(docinfo.getSubject());
// キーワードをコピー
docinfo_ext.setKeywords(docinfo.getKeywords());
// クリエータをコピー
docinfo_ext.setCreator(docinfo.getCreator());
// プロデューサをコピー
docinfo_ext.setProducer(docinfo.getProducer());
// 作成日付をコピー
try (PtlDate dateCreate = docinfo.getCreationDate())
{
docinfo_ext.setCreationDate(dateCreate);
}
// 更新日付をコピー
try (PtlDate dateMod = docinfo.getModDate())
{
docinfo_ext.setModDate(dateMod);
}
// ページ挿入オプション
// OPTION_COPY_OUTLINES = 0x00000004 ページ挿入時にあわせてしおりをコピーします。
// OPTION_COPY_ATTACHEDFILES = 0x00000008ページ挿入時にあわせて添付ファイルをコピーします。
int insertoption = PtlPages.OPTION_COPY_OUTLINES | PtlPages.OPTION_COPY_ATTACHEDFILES;
// ページの追加
// PtlPages.append() のパラメータfromNumは0スタートのため、startPageから1引いています。
pages_ext.append(doc, startPage - 1, pagesToPrint, insertoption);
...【AppendPages.javaと同じ処理のため省略
・PtlParamOutputを用いてPtlPDFDocument docの内容を出力
・PtlException, Exception, Error を catchするエラー処理
・finally文で"--完了--"と表示する処理】...
}
}
ExtractPages.java
C:\samples>java cookbook.ExtractPages usage: java ExtractPage in-pdf-file out-pdf-file start-page end-page C:\samples>java cookbook.ExtractPages tagged-pdf.pdf chap1-2.pdf 7 19 -- 完了 --