このエントリーをはてなブックマークに追加

本記事は、Qiitaのこの記事と同一内容です。

はじめに

PDFを結合するプログラムを日本語で調べると、出てくる多くはiTextSharpを使う方法です。
これでもいいのですが、無料版のライセンスがAPGLであり商用ソフトを作る場合には支障をきたします。
そこで今回は、MITライセンスのpdfSharpを用いてPDFを結合してみます。
※ライセンスの違いは以下の記事を参照
 オープンソースライセンス、どれなら使っても良いの??

準備

まずはC#のプロジェクトをvisual studioで作成します。
次にそのプロジェクトにPdfSharpをインストールします。
 1.プロジェクト > NuGet パッケージの管理を開く
 2.検索欄に”pdfSharp”を入力する
 3.右側”インストール”ボタンをクリックする

コード実装

いよいよコードを実装します。
まずはライブラリをコードにインポートします。

using PdfSharp.Pdf;
using PdfSharp.Pdf.IO;

つついて実際に処理を実装します。
1.結合後PDFのオブジェクトを作成

// PDFオブジェクト作成
PdfDocument document = new PdfDocument()

2.結合するPDFを開く

// file:結合するファイルのパス
// PdfDocumentOpenMode.Import:PDFを読み取りモードで開く
// 結合するPDFオブジェクトを作成
PdfDocument inputDocument = PdfReader.Open(file, PdfDocumentOpenMode.Import)

3.結合するPDFの全ページを結合後PDFに追加する

// 頁全件ループ
foreach (PdfPage page in inputDocument.Pages)
{
    // PDF頁を追加
    document.AddPage(page);
}
// 結合するPDFを閉じる
inputDocument.Close();

4.2,3を結合するPDFの数だけ繰り返す
5.PDFを保存し閉じる

// PDF保存
document.Save(selectedPath);
// PDFを閉じる
document.Close();

このようにして実際に作成したコードは以下の中の関数”pdfMerge”です。
PDFmerger/IOpg.cs
以下補足
・結合するファイルのパスはListにまとめておき、foreachを回して上記処理2~4を繰り替えすのがおすすめです。
・PDFオブジェクト作成時はusing句を使うことで、確実に処理終了時の解放ができます。
・例外処理(try-catch等)もお忘れなく。

ライセンス表記

PdfSharpはMITライセンスのライブラリで、使用する際はライセンスの表記が必要です。
ソースコード中やreadmeなどにライセンス表記を入れましょう。

/*
 * PdfSharpライセンス表記
 * Creator of PDFsharp is empira Software GmbH
 * Kirchstrase 19 53840 Troisdorf Germany
 * http://www.empira.de
 * PDFsharp (R) is a registered trademark of empira Software GmbH
 * Released under the MIT license
 * http://www.pdfsharp.net/PDFsharp_License.ashx?AspxAutoDetectCookieSupport=1
 */


←Next: [Python]所要時間で見るDataFrameの強さと弱点
Previous: Welcome to Jekyll!