2018年10月に発売を開始したドキュメントAPIライブラリシリーズ「DioDocs(ディオドック)」は最初のバージョンアップを迎えました。2019年2月27日に提供を開始したバージョンでは、おもにPDF関連機能が強化されています。
最も利用したい機能のひとつ、が無かった
DioDocsを利用すると、開発環境や運用環境で専用ソフトウェアを使うことなく、業務システムからの入出力などで利用される文書ファイルを生成、更新する仕組みをアプリケーションに組み込みできます。
たとえばPDF文書をライブラリのAPIを使い作成することができます。しかし利用方法としては、既存のPDFファイルを更新することのほうが現実的です。
詳細なレイアウトの帳票は、ActiveReportsのような専用帳票ツールを利用したほうが高い生産性で実現します。
その点、DioDocsはUIが無いライブラリなので軽快に動作するため、「帳票」よりも「PDFファイル」として扱うことに長けています。
以前紹介したCodeZineの記事
『.NET向けExcel・PDF操作ライブラリ「DioDocs」の衝撃! その魅力に迫る』
でも、DioDocsの魅力として挙げられています。
しかし、この記事の4ページ目に上記の見出しにも書いた、以下のコメントがありました。
ただしDioDocs for PDFについては、個人的には最も利用したい機能の1つが日本版にはまだリリースされていませんでした。具体的には複数のPDFを結合する機能です。
この時は先行リリースしている英語版を利用して回避しましたが、PDFの結合機能は今回の新バージョンに搭載しました。
複数のPDFファイルをまとめる方法
PDF結合機能をコードで実装する手順は簡単です。
- 対象PDFファイルを読み込むためのオブジェクトを生成
- 結合後のPDFオブジェクトを準備
- 結合対象の各ファイルを読み込み
- 結合処理
- 完成したPDFオブジェクトをファイルに保存
手順ごとのコードを解説します。
以下の例では3つのファイルを結合します。
なお、DioDocs for PDFの基本的な利用方法は記事*1や製品情報ページで*2で解説しています。
オブジェクトの生成
GcPdfDocument
クラスのインスタンスを生成します。
// 結合処理用 GcPdfDocument doc = new GcPdfDocument(); // 対象ファイル用 GcPdfDocument doc_conn = new GcPdfDocument();
ファイルの読み込み
doc
オブジェクトにファイルを読み込みます。
読み込むファイルは、操作をする間は有効である必要があるので、Using
で囲みます。
using (var fs0 = new FileStream("base.pdf"), FileMode.Open, FileAccess.Read)) using (var fs1 = new FileStream("con_A.pdf"), FileMode.Open, FileAccess.Read)) { doc.Load(fs0); // 元のファイルを読み込み doc_conn.Load(fs1); // 結合するファイルを読み込み : }
ファイルの結合
読み込んだファイルをMergeWithDocument()
メソッドで結合します。
: // docにdoc_connを結合 doc.MergeWithDocument(doc_conn, new MergeDocumentOptions()); :
ファイルの保存
最後にファイルを保存するとひとつにまとまったPDFファイルが完成します。
: // 結合したdocオブジェクトを保存 doc.Save("Merged.pdf"); }
結合したサンプルファイルを入手
実際に動作するPDF結合機能はデモサイトでお試しできます。
デモでは上記の手順に加え、先頭に結合を解説する画像のページを追加しています。
異なるレイアウトのファイルを結合した結果もダウンロード可能です。
Webページ上で実行結果を確認することができますが、
C#とVisual Basic.NETの2種類コードを用意していますので、プロジェクトごとダウンロードして試すことができます。
なお、デモで利用しているPDFファイルは、製品紹介資料や価格表などビジネス色が強めですのでご了承ください。
PDFのマージ | DioDocs for PDF デモアプリケーション
また、CodeZine記事をはじめ、DioDocsを解説する記事を製品情報ページにリンクをまとめています。
興味のある記事からご覧ください。
関連情報
弊社Webサイトでは、製品の機能を気軽に試せるデモアプリケーションやトライアル版も公開していますので、こちらもご確認いただければと思います。
また、ご導入前の製品に関するご相談やご導入後の各種サービスに関するご質問など、お気軽にお問合せください。