目次
はじめに
複数のPDFファイルを結合する作業、手動でやっていると地味に時間がかかりますよね。
私もC#でPDF処理の自動化を考えていたところ、フォルダ内のPDFファイルをまとめて1つのPDFに結合する処理を実装してみました。
今回はその方法を詳しく紹介いたします。
実現したいこと
- フォルダの中にあるすべてのPDFファイルを1つのPDFに結合する
- 手動で選ばず、自動で結合対象を検出
- C#のボタン操作で簡単に実行できるようにしたい
使用ライブラリ:iTextSharp
PDF結合には、.NETでよく使われているライブラリ「iTextSharp」を使います。
NuGetから以下のコマンドでインストールできます:
mathematicaコピーする編集するInstall-Package iTextSharp
または、Visual Studio の NuGet パッケージマネージャーから「iTextSharp」と検索して追加してください。
ステップ①:PDFを結合するメソッドを作成
以下は、PDFファイルを結合するためのMergePDFs
メソッドです。
using iTextSharp.text;
using iTextSharp.text.pdf;
private static void MergePDFs(List<string> inputFiles, string outputFile)
{
using (var fs = new FileStream(outputFile, FileMode.Create))
{
var document = new Document();
var copy = new PdfCopy(document, fs);
try
{
document.Open();
foreach (var inputFile in inputFiles)
{
var reader = new PdfReader(inputFile);
var pageCount = reader.NumberOfPages;
for (var i = 1; i <= pageCount; i++)
{
var page = copy.GetImportedPage(reader, i);
copy.AddPage(page);
}
reader.Close();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
if (document.IsOpen()) document.Close();
}
}
}
ステップ②:ボタンクリックでPDF結合を実行
以下は、フォーム上のボタン(例:btn_merge)をクリックした際の処理です。
指定フォルダからPDFを検出し、結合ファイルを作成します。
private void btn_merge_Click(object sender, EventArgs e)
{
string pdfFolder = txtBox_folderpath.Text;
string savepdfFolder = txtBox_savefolderpath.Text;
// PDFファイルのリストを作成
List<string> pdfList = new List<string>();
foreach (string pdfFile in Directory.GetFiles(pdfFolder, "*.pdf"))
{
pdfList.Add(pdfFile);
}
// PDFファイルを結合
string outputFile = Path.Combine(savepdfFolder, "Merged.pdf");
MergePDFs(pdfList, outputFile);
MessageBox.Show("結合完了しました。");
}
構成例(フォーム)
txtBox_folderpath
:PDFが入っているフォルダのパスを入力するテキストボックスtxtBox_savefolderpath
:結合後のPDFを保存するフォルダパスを入力するテキストボックスbtn_merge
:結合を実行するボタン
応用のヒント
- 複数のPDFをファイル名順に並べたい場合は、
Directory.GetFiles()
の結果をOrderBy
などでソートすると便利です - 結合後にパスワード付きPDFとして出力することも
iTextSharp
で可能です - ヘッダー・フッターやページ番号の追加などもカスタマイズできます
まとめ
C#とiTextSharpを使えば、フォルダ内の複数PDFを一括で結合する処理が簡単に実現できます。
特に、日常的にPDFを扱う業務で、結合作業を自動化したい方には非常に有効です。
UIと連携すれば、クリック一つでPDFが結合される環境を構築できます。
少しでも参考になれば幸いです。