はじめに
開発プロジェクトにおいて、複数のPDFファイルを1つのドキュメントに結合したり、複数のPDFから特定のページを抽出して新しいPDFを作成したりする要件は頻繁に発生します。本記事では、Spire.PDF for .NETライブラリを使用して以下の2つの機能を実装する方法を解説します。
- 完全なPDFドキュメントの結合
- 複数のPDFから指定ページを結合
1. Spire.PDFの導入
まず、Spire.PDF for .NETをインストールする必要があります。NuGetパッケージマネージャーから以下のコマンドを実行します。
Install-Package Spire.PDF
または、Visual Studioの「NuGetパッケージの管理」画面で「Spire.PDF」を検索してインストールします。
2. 完全なPDFドキュメントの結合
複数のPDFファイルを順番に連結して1つのドキュメントにする基本的なシナリオです。
using Spire.Pdf;
using System.IO;
namespace PdfMerger
{
class Program
{
static void ExecuteMerge()
{
// 結合対象のPDFファイルリスト
var inputFiles = new string[] { "doc1.pdf", "doc2.pdf", "doc3.pdf" };
// PDFファイルを結合
PdfDocumentBase combinedPdf = PdfDocument.MergeFiles(inputFiles);
// 結合結果を保存
combinedPdf.Save("merged_output.pdf", FileFormat.PDF);
}
}
}
✅ メリット:コードが簡潔で、安定した実行が可能。バッチ処理に適しています。
⚠️ 注意:ファイルパスが存在し、読み取り可能であることを確認してください。
3. 特定ページの結合
実際の業務では、異なるPDFから特定のページ(例:契約書の2ページ目と承認書の3ページ目)を結合する必要があります。
using Spire.Pdf;
namespace PdfPageExtractor
{
class Program
{
static void PerformSelectiveMerge()
{
// 処理対象のPDFファイル
string[] sourceFiles = new string[] { "contract.pdf", "approval.pdf" };
// 各PDFドキュメントを読み込み
PdfDocument[] sourceDocuments = new PdfDocument[sourceFiles.Length];
for (int index = 0; index < sourceFiles.Length; index++)
{
sourceDocuments[index] = new PdfDocument(sourceFiles[index]);
}
// 新しいPDFドキュメントを作成
PdfDocument resultDocument = new PdfDocument();
// 最初のドキュメントからページ2-3を追加
resultDocument.InsertPageRange(sourceDocuments[0], 1, 2);
// 2番目のドキュメントからページ1を追加
resultDocument.InsertPage(sourceDocuments[1], 0);
// 結果を保存
resultDocument.SaveToFile("custom_merged.pdf");
}
}
}
📌 適用シーン:ドキュメント間のコンテンツ統合、レポートのページ番号再編成。
4. 重要な考慮事項
- ページインデックス:Spire.PDFのページインデックスは0から始まります(一部のソフトウェアのように1からではありません)。
- 大規模ファイル処理:多数または大容量のPDFを結合する際は、usingステートメントを使用してリソースが確実に解放されるようにすることをお勧めします。
- サポート形式:Spire.PDFはPDF 1.0からPDF 1.7までの形式と、一部のPDF/A形式をサポートしています。
以上のコードにより、C#で基本的なPDFドキュメントの結合を実現できるだけでなく、ページの順序を柔軟に制御し、特定のページをスキップして複雑なビジネスシナリオに対応することも可能です。