今回は「DioDocs(ディオドック)」の機能で、PDFファイルに含まれるページをコピーしたり移動する方法を紹介します。こちらの機能は、2023年6月21日(水)にリリースされた「DioDocs V6J SP1」で追加された機能です。
PDFファイルのページをコピー
今までもMergeWithDocument
メソッドを使用して、同じPDFファイルを読み込んで結合するという方法でページのコピーはできたのですが、こちらの方法は直感的ではなく手間がかかる方法でした。
var fs = new FileStream("source.pdf", FileMode.Open);
var doc_source = new GcPdfDocument();
var doc_copy = new GcPdfDocument();
doc_source.Load(fs);
doc_copy.Load(fs);
var options = new GrapeCity.Documents.Pdf.MergeDocumentOptions();
// 1ページ目から2ページ目までを
options.PagesRange = new GrapeCity.Documents.Common.OutputRange(1, 2);
// 最終ページの後に追加
options.Index = doc_copy.Pages.Count;
doc_copy.MergeWithDocument(doc_source, options);
doc_copy.Save("pagecopy.pdf");
V6J SP1では新しくClonePage
メソッドが追加されています。このメソッドの最初のパラメータsourceIndex
で複製するページのインデックスを指定し、2番目のパラメータdestinationIndex
で複製したページを挿入する位置のインデックスを指定するという、非常にシンプルな方法でページのコピーができるようになります。
var fs = new FileStream("diodocs_a4_full.pdf", FileMode.Open);
var doc1 = new GcPdfDocument();
doc1.Load(fs);
// 1ページ目を3ページ目にコピー
doc1.Pages.ClonePage(0, 2);
doc1.Save("ClonePage.pdf");
PDFファイルのページを移動
ページのコピーの他に、V6J SP1ではPDFファイルのページを移動する機能としてMove
メソッドが追加されています。最初のパラメータcurIndex
で移動するページのインデックスを指定し、2番目のnewIndex
でページを移動する位置のインデックスを指定します。
var fs = new FileStream("diodocs_a4_full.pdf", FileMode.Open);
var doc2 = new GcPdfDocument();
doc2.Load(fs);
// 1ページ目を3ページ目に移動
doc2.Pages.Move(0, 2);
doc2.Save("MovePage.pdf");
番外編:PDFファイルをページごとに分割
新機能ではありませんが、DioDocs for PDFでは前述のMergeWithDocument
メソッドを使用してPDFファイルをページごとに分割することも可能です。
以下のように、MergeDocumentOptions
クラスのPagesRange
プロパティでページを指定してMergeWithDocument
メソッドを実行し、Save
メソッドで保存すればPDFファイルをページごとに分割したPDFファイルを作成できます。
var fs = new FileStream("diodocs_a4_full.pdf", FileMode.Open);
var doc3 = new GcPdfDocument();
doc3.Load(fs);
// 結合オプション
var options = new MergeDocumentOptions();
// 1ページずつ分割する
for (int i = 1; i <= doc3.Pages.Count; i++)
{
options.PagesRange = new GrapeCity.Documents.Common.OutputRange(i, i);
var separateDoc = new GcPdfDocument();
separateDoc.MergeWithDocument(doc3, options);
separateDoc.Save(String.Format("SplitPage{0}.pdf", i));
}
上記コードを実装しているサンプルは以下です。
今回紹介した内容は「ナレッジベース」の以下の項目でも公開しています。ナレッジベースでは、このほかにも開発に有用な情報を公開していますので、ぜひご覧ください。
さいごに
弊社Webサイトでは、製品の機能を気軽に試せるデモアプリケーションやトライアル版も公開していますので、こちらもご確認いただければと思います。
また、ご導入前の製品に関するご相談やご導入後の各種サービスに関するご質問など、お気軽にお問合せください。