元のPDFの各ページが独自のPDFドキュメントになっている1ページのPDFをいくつか作成したいPDFがあります。itextsharpを使用してこれを実行しようとしていますが、開始することさえ困難です。
私はこれを間違った方法で行っていますか?誰かが私がこれをどうやってやるのか知っていますか?
トンありがとう!
元のPDFの各ページが独自のPDFドキュメントになっている1ページのPDFをいくつか作成したいPDFがあります。itextsharpを使用してこれを実行しようとしていますが、開始することさえ困難です。
私はこれを間違った方法で行っていますか?誰かが私がこれをどうやってやるのか知っていますか?
トンありがとう!
これに適している可能性のある別のライブラリPDFSharpがあります。PDFDocumentオブジェクトを開いて、各ページを個別に調べ、それを独自の個別のPDFドキュメントに抽出することができます。
これを実行できる2つの異なるコマンドラインツールがあり、どちらも利用可能な主要なOSプラットフォームのいずれにも対応しています。
コマンドラインの例:
pdftk input.pdf burst output page_%04d-from-input.pdf
コマンドラインの例:
gs \
-o page_%04d-from-input.pdf \
-sDEVICE=pdfwrite \
input.pdf
警告:%04d
これは、ページごとに異なる出力ファイルと名前のこのコマンドライン構文をサポートするGhostscriptの最新バージョンのみです。
pdftk
その過程でPDF操作を行うことができず、非常に高速です。
新しいGhostscriptメソッドはやや遅くなりますが、必要に応じて他の多くのPDF処理機能を適用できるという利点があります。
using (FileStream fs = new FileStream(argPdfFileName, FileMode.Create))
{
Document doc = new Document(argReader.GetPageSize(argPdfPageNumber));
PdfCopy copy = new PdfCopy(doc, fs);
doc.Open();
PdfImportedPage page = copy.GetImportedPage(argReader, argPdfPageNumber);
copy.AddPage(page);
doc.Close();
}
いくつかの動作中のコードからこれを切り取った。argReaderは、ソースドキュメントを指すPdfReaderインスタンスです。argPdfPageNumberは、問題のページ番号です。基本的には、新しいpdfを作成するだけです。ソースページをインポートして、ドキュメントに追加して保存します。