
.NET CoreでIronPDFを使ってPDFジェネレーターを構築する
IronPDFを使用してC#でPDFファイルを統合するのは、ほんの数行のコードで済みます -- Merge()メソッドで統合します。これにより、手動のドキュメント処理や複雑な処理ロジックを排除できます。
個別のドキュメント ファイルとレポートを処理すると、ワークフローが遅くなる可能性があります。 PDF ファイルを手動で結合したり、古いツールに苦労したりするのに時間を費やすと、開発者の労力が無駄になります。 このチュートリアルでは、 IronPDFライブラリを使用して C# でプログラム的に PDF ファイルを結合する方法を説明します。 複雑な書式、埋め込みフォント、インタラクティブなフォーム フィールドを含むドキュメントの場合でも、プロセスは簡単です。
ASP.NETアプリケーションの構築、Windows フォームの操作、クラウドベースのソリューションの開発など、どのような場合でも、 IronPDF はPDF 操作とドキュメント管理のためのすぐに使用できるソリューションを提供します。 ライブラリの Chrome ベースのレンダリング エンジンは、 PDF を結合するときにピクセル単位の忠実度を保証し、すべての書式、フォント、フォーム データを保持します。
IronPDF for C#をどのようにインストールしますか?
パッケージ マネージャー コンソールまたは.NET CLI を使用してNuGetパッケージをダウンロードします。
IronPDF は、 .NET Framework、 .NET Core、 .NET 10 のほか、Linux、macOS、Azure、AWS とも互換性があります。 これにより、 .NET 10 をターゲットとする最新のクロスプラットフォーム アプリケーションに適したものになります。詳細については、インストールの概要を参照してください。
すべての PDF コントロールとメソッドにアクセスするには、C# ファイルの先頭に名前空間を追加します。
using IronPdf;Imports IronPdf2 つの PDF ファイルを結合するにはどうすればよいでしょうか?
次の C# の例では、2 つの PDF ドキュメントを読み込み、それらを 1 つの出力ファイルに結合します。
using IronPdf;
var pdf1 = PdfDocument.FromFile("Report1.pdf");
var pdf2 = PdfDocument.FromFile("Report2.pdf");
var mergedPdf = PdfDocument.Merge(pdf1, pdf2);
mergedPdf.SaveAs("MergedReport.pdf");Imports IronPdf
Dim pdf1 = PdfDocument.FromFile("Report1.pdf")
Dim pdf2 = PdfDocument.FromFile("Report2.pdf")
Dim mergedPdf = PdfDocument.Merge(pdf1, pdf2)
mergedPdf.SaveAs("MergedReport.pdf")これはMerge静的メソッドでそれらを統合し、結果を保存します。 マージでは、すべての書式、埋め込まれたフォーム フィールド、メタデータ、ブックマーク、注釈が保持されます。 この方法は、HTML から変換されたもの、URL から生成されたもの、画像から作成されたものなど、さまざまなソースから作成された PDF で機能します。
出力された PDF ファイルはどのようになりますか?

複数の PDF ファイルを一度に結合するにはどうすればよいでしょうか?
2つ以上のドキュメントを統合する必要がある場合は、PdfDocumentオブジェクトの配列を渡してください。
using IronPdf;
string[] pdfFiles = { "January.pdf", "February.pdf", "March.pdf", "April.pdf" };
var pdfs = pdfFiles.Select(PdfDocument.FromFile).ToArray();
var merged = PdfDocument.Merge(pdfs);
merged.SaveAs("QuarterlyReport.pdf");Imports IronPdf
Dim pdfFiles As String() = {"January.pdf", "February.pdf", "March.pdf", "April.pdf"}
Dim pdfs = pdfFiles.Select(AddressOf PdfDocument.FromFile).ToArray()
Dim merged = PdfDocument.Merge(pdfs)
merged.SaveAs("QuarterlyReport.pdf")これは複数のPDFファイルをPdfDocumentオブジェクトに読み込み、一度の操作で統合します。 このMerge静的メソッドは、バッチ処理のために配列を受け入れます。 数行の C# コードで複数の PDF を一度に処理できます。
多数のファイルを処理する際のスループットを向上させるには、非同期操作または並列処理を検討してください。 IronPDF のマルチスレッド サポートにより、大規模なドキュメント バッチでも安定したパフォーマンスが維持されます。 メモリ集約的な操作を行う際は、PdfDocumentオブジェクトの適切なリソース管理と廃棄が重要です。
エラー処理を使用して PDF のフォルダー全体を結合するにはどうすればよいですか?
以下の例では、ディレクトリからすべての PDF ファイルを読み取り、一貫した順序になるように名前で並べ替え、ファイルごとのエラー処理を使用してファイルをマージします。
using IronPdf;
using System.IO;
string pdfDirectory = @"C:\Reports\Monthly\";
string[] pdfFiles = Directory.GetFiles(pdfDirectory, "*.pdf");
Array.Sort(pdfFiles);
var pdfs = new List<PdfDocument>();
foreach (var file in pdfFiles)
{
try
{
pdfs.Add(PdfDocument.FromFile(file));
Console.WriteLine($"Loaded: {Path.GetFileName(file)}");
}
catch (Exception ex)
{
Console.WriteLine($"Error loading {file}: {ex.Message}");
}
}
if (pdfs.Count > 0)
{
var merged = PdfDocument.Merge(pdfs.ToArray());
merged.MetaData.Author = "Report Generator";
merged.MetaData.CreationDate = DateTime.Now;
merged.MetaData.Title = "Consolidated Monthly Reports";
merged.SaveAs("ConsolidatedReports.pdf");
Console.WriteLine("Merge completed successfully!");
}Imports IronPdf
Imports System.IO
Dim pdfDirectory As String = "C:\Reports\Monthly\"
Dim pdfFiles As String() = Directory.GetFiles(pdfDirectory, "*.pdf")
Array.Sort(pdfFiles)
Dim pdfs As New List(Of PdfDocument)()
For Each file In pdfFiles
Try
pdfs.Add(PdfDocument.FromFile(file))
Console.WriteLine($"Loaded: {Path.GetFileName(file)}")
Catch ex As Exception
Console.WriteLine($"Error loading {file}: {ex.Message}")
End Try
Next
If pdfs.Count > 0 Then
Dim merged As PdfDocument = PdfDocument.Merge(pdfs.ToArray())
merged.MetaData.Author = "Report Generator"
merged.MetaData.CreationDate = DateTime.Now
merged.MetaData.Title = "Consolidated Monthly Reports"
merged.SaveAs("ConsolidatedReports.pdf")
Console.WriteLine("Merge completed successfully!")
End If結合された複数ファイルの PDF はどのように見えるでしょうか?

PDF ドキュメントから特定のページを結合するにはどうすればよいですか?
結合する前に、個々のページまたはページ範囲を抽出できます。 CopyPagesは範囲を抽出します。
using IronPdf;
var doc1 = PdfDocument.FromFile("PdfOne.pdf");
var doc2 = PdfDocument.FromFile("PdfTwo.pdf");
var firstPage = doc2.CopyPage(0);
var selectedRange = doc1.CopyPages(2, 4);
var result = PdfDocument.Merge(firstPage, selectedRange);
result.SaveAs("CustomPdf.pdf");Imports IronPdf
Dim doc1 = PdfDocument.FromFile("PdfOne.pdf")
Dim doc2 = PdfDocument.FromFile("PdfTwo.pdf")
Dim firstPage = doc2.CopyPage(0)
Dim selectedRange = doc1.CopyPages(2, 4)
Dim result = PdfDocument.Merge(firstPage, selectedRange)
result.SaveAs("CustomPdf.pdf")これにより、大きなソース ドキュメントから関連するページのみを含む出力ファイルが作成されます。 ページ操作 API を使用すると、ドキュメント構造を正確に制御できます。 必要に応じて、ページを回転したり、ページ番号を追加したり、改ページを挿入したりすることもできます。
複数のソースからカスタム ドキュメントを組み立てるにはどうすればよいでしょうか?
次の例では、契約書、付録、および利用規約ファイルの 3 つの個別のドキュメントからセクションを抽出し、それらをターゲット パッケージに結合します。
using IronPdf;
var contract = PdfDocument.FromFile("Contract.pdf");
var appendix = PdfDocument.FromFile("Appendix.pdf");
var terms = PdfDocument.FromFile("Terms.pdf");
// Extract specific sections
var contractPages = contract.CopyPages(0, 5); // First 6 pages
var appendixCover = appendix.CopyPage(0); // Cover page only
var termsHighlight = terms.CopyPages(3, 4); // Pages 4-5
// Merge selected pages
var customDoc = PdfDocument.Merge(contractPages, appendixCover, termsHighlight);
customDoc.AddTextHeaders(
"Contract Package - {page} of {total-pages}",
IronPdf.Editing.FontFamily.Helvetica, 12);
customDoc.SaveAs("ContractPackage.pdf");Imports IronPdf
Dim contract = PdfDocument.FromFile("Contract.pdf")
Dim appendix = PdfDocument.FromFile("Appendix.pdf")
Dim terms = PdfDocument.FromFile("Terms.pdf")
' Extract specific sections
Dim contractPages = contract.CopyPages(0, 5) ' First 6 pages
Dim appendixCover = appendix.CopyPage(0) ' Cover page only
Dim termsHighlight = terms.CopyPages(3, 4) ' Pages 4-5
' Merge selected pages
Dim customDoc = PdfDocument.Merge(contractPages, appendixCover, termsHighlight)
customDoc.AddTextHeaders(
"Contract Package - {page} of {total-pages}",
IronPdf.Editing.FontFamily.Helvetica, 12)
customDoc.SaveAs("ContractPackage.pdf")入力 PDF ファイルはどのようになっているでしょうか?


ページ固有のマージは出力にどのような影響を与えますか?

メモリ ストリームから PDF ドキュメントを結合するにはどうすればよいですか?
アプリケーションが PDF データをバイト配列として受け取る場合 (アップロードされたファイル、データベース レコード、または Web サービスの応答から)、ファイル システムに触れることなくメモリから直接マージできます。
using IronPdf;
using System.IO;
using var stream1 = new MemoryStream(File.ReadAllBytes("Doc1.pdf"));
using var stream2 = new MemoryStream(File.ReadAllBytes("Doc2.pdf"));
var pdf1 = new PdfDocument(stream1);
var pdf2 = new PdfDocument(stream2);
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("Output.pdf");Imports IronPdf
Imports System.IO
Using stream1 As New MemoryStream(File.ReadAllBytes("Doc1.pdf"))
Using stream2 As New MemoryStream(File.ReadAllBytes("Doc2.pdf"))
Dim pdf1 = New PdfDocument(stream1)
Dim pdf2 = New PdfDocument(stream2)
Dim merged = PdfDocument.Merge(pdf1, pdf2)
merged.SaveAs("Output.pdf")
End Using
End Usingこのパターンは、アップロードされたファイルを処理するASP.NETアプリケーションや、直接のファイル システム アクセスが制限されているクラウド展開に適しています。 Azure Blob Storage からファイルを取得する場合や、生の PDF バイトを返す外部 Web サービスを呼び出す場合も、同じアプローチが機能します。
PDF 結合にメモリ ストリームを使用する必要があるのはいつですか?
メモリ ストリームは次のような場合に適しています。
- Webアプリケーションでアップロードされたファイルを操作する
- データベースのBLOBフィールドから取得したPDFの処理
- 書き込み可能なファイルシステムのないコンテナ環境での動作
- ディスク上に一時ファイルを作成せずに安全なドキュメント処理を実装
- PDFをメモリ内でエンドツーエンドで処理するマイクロサービスの構築
実際の PDF レポート編集ワークフローとは?
次の例では、動的な HTML カバー ページを生成し、既存のレポート セクションを読み込み、機密透かしを適用し、すべてを順番にマージし、出力を保護します。
using IronPdf;
using System;
var reportDate = DateTime.Now;
var quarter = $"Q{(int)Math.Ceiling(reportDate.Month / 3.0)}";
var coverHtml = $@"
<html>
<body style='text-align: center; padding-top: 200px;'>
<h1>Financial Report {quarter} {reportDate.Year}</h1>
<h2>{reportDate:MMMM yyyy}</h2>
<p>Confidential -- Internal Use Only</p>
</body>
</html>";
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 40;
renderer.RenderingOptions.MarginBottom = 40;
var dynamicCover = renderer.RenderHtmlAsPdf(coverHtml);
var executive = PdfDocument.FromFile("ExecutiveSummary.pdf");
var financial = PdfDocument.FromFile("FinancialData.pdf");
var charts = PdfDocument.FromFile("Charts.pdf");
var appendix = PdfDocument.FromFile("Appendix.pdf");
financial.ApplyWatermark("<h2 style='color: red; opacity: 0.5;'>CONFIDENTIAL</h2>");
var fullReport = PdfDocument.Merge(dynamicCover, executive, financial, charts, appendix);
fullReport.MetaData.Title = $"Financial Report {quarter} {reportDate.Year}";
fullReport.MetaData.Author = "Finance Department";
fullReport.MetaData.Subject = "Quarterly Financial Performance";
fullReport.MetaData.CreationDate = reportDate;
fullReport.AddTextHeaders(
$"{quarter} Financial Report",
IronPdf.Editing.FontFamily.Arial, 10);
fullReport.AddTextFooters(
"Page {page} of {total-pages} | Confidential",
IronPdf.Editing.FontFamily.Arial, 8);
fullReport.SecuritySettings.UserPassword = "reader123";
fullReport.SecuritySettings.OwnerPassword = "admin456";
fullReport.SecuritySettings.AllowUserPrinting = true;
fullReport.SecuritySettings.AllowUserCopyPasteContent = false;
fullReport.CompressImages(90);
fullReport.SaveAs($"Financial_Report_{quarter}_{reportDate.Year}.pdf");
Console.WriteLine($"Report generated: {fullReport.PageCount} pages");Imports IronPdf
Imports System
Module Program
Sub Main()
Dim reportDate As DateTime = DateTime.Now
Dim quarter As String = $"Q{CInt(Math.Ceiling(reportDate.Month / 3.0))}"
Dim coverHtml As String = $"
<html>
<body style='text-align: center; padding-top: 200px;'>
<h1>Financial Report {quarter} {reportDate.Year}</h1>
<h2>{reportDate:MMMM yyyy}</h2>
<p>Confidential -- Internal Use Only</p>
</body>
</html>"
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4
renderer.RenderingOptions.MarginTop = 40
renderer.RenderingOptions.MarginBottom = 40
Dim dynamicCover As PdfDocument = renderer.RenderHtmlAsPdf(coverHtml)
Dim executive As PdfDocument = PdfDocument.FromFile("ExecutiveSummary.pdf")
Dim financial As PdfDocument = PdfDocument.FromFile("FinancialData.pdf")
Dim charts As PdfDocument = PdfDocument.FromFile("Charts.pdf")
Dim appendix As PdfDocument = PdfDocument.FromFile("Appendix.pdf")
financial.ApplyWatermark("<h2 style='color: red; opacity: 0.5;'>CONFIDENTIAL</h2>")
Dim fullReport As PdfDocument = PdfDocument.Merge(dynamicCover, executive, financial, charts, appendix)
fullReport.MetaData.Title = $"Financial Report {quarter} {reportDate.Year}"
fullReport.MetaData.Author = "Finance Department"
fullReport.MetaData.Subject = "Quarterly Financial Performance"
fullReport.MetaData.CreationDate = reportDate
fullReport.AddTextHeaders($"{quarter} Financial Report", IronPdf.Editing.FontFamily.Arial, 10)
fullReport.AddTextFooters("Page {page} of {total-pages} | Confidential", IronPdf.Editing.FontFamily.Arial, 8)
fullReport.SecuritySettings.UserPassword = "reader123"
fullReport.SecuritySettings.OwnerPassword = "admin456"
fullReport.SecuritySettings.AllowUserPrinting = True
fullReport.SecuritySettings.AllowUserCopyPasteContent = False
fullReport.CompressImages(90)
fullReport.SaveAs($"Financial_Report_{quarter}_{reportDate.Year}.pdf")
Console.WriteLine($"Report generated: {fullReport.PageCount} pages")
End Sub
End Moduleこれは、特定の順序でドキュメントを結合し、PDF メタデータを追加し、透かしを適用し、パスワード保護で出力を保護する方法を示します。 メタデータ管理は、ドキュメントの整理とコンプライアンスにとって重要です。 アーカイブ標準の出力については、 PDF/A 準拠ガイドを参照してください。
マージ時にドキュメントの順序が重要なのはなぜですか?
ドキュメントの順序は、読者の体験と技術的な構造に直接影響します。
- ナビゲーションの流れと目次の正確さはセクションの順序に依存します
- ページ番号の連続性を保つには、すべてのセクションが意図した順序で表示される必要があります。
- 結合されたセクション間のヘッダーとフッターの一貫性は、適切な順序付けに依存します。
- ブックマークの階層とリーダーナビゲーションはマージシーケンスに従います
- インタラクティブPDFのフォームフィールドのタブ順序はドキュメントの位置を継承します
出力がカバーから付録まで論理的に読めるようにするために、Mergeを呼び出す前に明確なセクション順序を定義してください。
C#でPDFをマージするためのベストプラクティスは何ですか?
以下のいくつかのガイドラインに従うことで、結合された PDF が本番環境で信頼できるものになります。
| 練習する | なぜそれが重要なのか | ガイダンス |
|---|---|---|
| 読み込む前に入力ファイルを検証する | 見つからないファイルでの null 参照例外を防止します | FromFile()を呼び出す前にFile.Exists()を使用してください。 |
| 使用後はPdfDocumentオブジェクトを破棄する | レンダリングエンジンが保持するネイティブメモリを解放します | ブロックをusingラップするか、 .Dispose()を呼び出します。 |
| 大規模なコレクションにはバッチ処理を使用する | 大きなファイルセットでのメモリ不足エラーを回避します | 10~20個のファイルをグループにまとめてマージし、バッチ結果をマージします。 |
| 結合後に画像を圧縮する | 目に見える品質の低下なく出力ファイルのサイズを縮小 | 結合された文書に対してCompressImages(85)を呼び出す |
| ソースドキュメントにフォントを埋め込む | マージされた出力でフォントの置換を防止します | 結合前にソースPDFにフォントが埋め込まれていることを確認する |
| 結合前にフォームフィールドの名前を変更する | ソースドキュメント間でのフィールド名の衝突を回避します | 重複するフィールド名をプログラムで列挙して名前を変更する |
PDF の構造と交換に関する業界標準については、 PDF Associationをご覧ください。 コミュニティの回答とコード例はStack Overflowで入手できます。 IronPDFのNuGetギャラリー ページには、利用可能なすべてのバージョンとリリース ノートがリストされています。 高度な構成オプションと実稼働ライセンスについては、 "IronPDFライセンス"を参照してください。
一般的なマージエラーをどのように処理しますか?
最も頻繁に発生する 5 つの問題とその解決策:
1.大きなファイルによるメモリの問題- メモリ ストリームとバッチ処理を使用して、ヒープ使用量を管理可能な状態に保ちます。 必要がなくなった各PdfDocumentを廃棄してください。
2.マージされた出力のフォントの問題- マージする前に、ソース PDF にフォントが埋め込まれていることを確認します。 フォントが見つからない場合、出力で文字が置き換えられたり、文字が欠落したりします。
3. フォームフィールドの競合 -- Mergeを呼び出す前に、重複するフィールド名をプログラムでリネームしてください。 ドキュメント間で同じ名前を持つフィールドは値を共有します。
4.大規模なバッチでのパフォーマンスのボトルネック- 依存関係が許す限り、非同期メソッドに切り替えてファイルを並列処理します。 例については、 IronPDF非同期ドキュメントを参照してください。
5.ソース PDF のセキュリティ制限- パスワードで保護されたドキュメントの読み取りと結合を試みる前に、所有者のパスワードを入力します。 PDF 権限に関するドキュメントを参照してください。
IronPDF を無料で使い始めるにはどうすればいいですか?
IronPDF は、C# での PDF マージを数行のコードに削減します。 2 つのファイルを結合する場合でも、フォルダー ツリー全体を処理する場合でも、ライブラリが複雑な処理を処理するため、ユーザーは.NET 10 アプリケーションに集中できます。 完全な機能セットには、HTML から PDF への変換、PDF 編集、フォーム処理、デジタル署名が含まれます。
分かりやすいAPIにより複雑なPDF操作が不要になり、ドキュメントフォーマットに関する深い専門知識がなくても信頼性の高い結合処理を必要とする開発者にとって最適な選択肢となります。2つのファイルの単純な結合から、数十のソースにわたるページレベルの選択まで、 IronPDFはプロフェッショナルなドキュメント管理に必要なあらゆるツールを提供します。 クロスプラットフォーム サポートにより、ソリューションは Windows、Linux、macOS、クラウド プラットフォームで動作します。
実稼働環境での使用向けに、 IronPDF は透明な価格設定で柔軟なライセンスを提供します。 24時間365日対応のサポートチームと充実したドキュメントをご用意しておりますので、必要な時にいつでもご利用いただけます。IronPDFを他のPDFライブラリと比較し、開発チームがエンタープライズドキュメント生成にIronPDFを選ぶ理由をご確認ください。
プロジェクトでのマージをテストするには、無料トライアルを開始してください。クレジットカードは必要ありません。

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。
関連する記事


