PDFファイルのページをコピー、移動する

今回は「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ファイル
1ページ目を3ページ目にコピー

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ファイル
1ページ目を3ページ目に移動

番外編: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));
}
PDFファイルをページごとに分割

上記コードを実装しているサンプルは以下です。

今回紹介した内容は「ナレッジベース」の以下の項目でも公開しています。ナレッジベースでは、このほかにも開発に有用な情報を公開していますので、ぜひご覧ください。

さいごに

弊社Webサイトでは、製品の機能を気軽に試せるデモアプリケーションやトライアル版も公開していますので、こちらもご確認いただければと思います。

また、ご導入前の製品に関するご相談やご導入後の各種サービスに関するご質問など、お気軽にお問合せください。

\  この記事をシェアする  /