Quantcast
Channel: C#タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9525

PdfSharpでPDFを結合する

$
0
0

はじめに

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

※ライセンスの違いは以下の記事を参照
 「オープンソースライセンス、どれなら使っても良いの??」@fate_shelled
 https://qiita.com/fate_shelled/items/a928709d7610cee5aa66

準備


まずはC#のプロジェクトをvisual studioで作成します。
次にそのプロジェクトにPdfSharpをインストールします。

 1.プロジェクト > NuGet パッケージの管理を開く
 2.検索欄に"pdfSharp"を入力する
 3.右側"インストール"ボタンをクリックする

コード実装

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

usingPdfSharp.Pdf;usingPdfSharp.Pdf.IO;

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

// PDFオブジェクト作成PdfDocumentdocument=newPdfDocument()

2.結合するPDFを開く

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

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

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

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

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

このようにして実際に作成したコードは以下の中の関数"pdfMerge"です。
https://github.com/HagiAyato/PDFmerger/blob/main/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
 */

Viewing all articles
Browse latest Browse all 9525

Trending Articles