フッターコンテンツにスキップ
IRONPDFの使用

C#で動的にPDFを生成する方法

現代のウェブアプリケーションは静的なドキュメント作成以上のものを要求します。 個別の請求書の生成、データを元にしたPDFレポートの作成、カスタマイズされたフォームフィールドの作成といった場合には、開発者は実行時にPDFドキュメントを生成するための頑丈なツールを必要としています。IronPDFはそのための強力なソリューションとして登場し、動的なPDF生成を可能にするC#および.NETフレームワーク環境へのシームレスな統合のために、Chromeベースの強力なレンダリングを提供します。

C#での動的PDF生成方法:フィギュア1 - クロスプラットフォーム

C#での動的PDF生成とは何ですか?

C#での動的PDF生成は、データベース、API、またはユーザー入力など複数のデータソースからの可変データを使用して、実行時にPDFドキュメントを生成します。 静的PDFファイルとは異なり、実行時生成は個別のコンテンツ、条件付きセクション、およびデータ駆動のレイアウトを可能にします。これらは変化する要件に適応する必要がある請求書、PDFレポート、証明書、およびフォームにとって不可欠です。 このプログラム的にPDFを作成するアプローチは、現代の.NET Frameworkおよび.NET Coreアプリケーションにとって重要になっています。

C#での動的PDF生成方法:フィギュア2 - クロスプラットフォーム

IronPDFを始めよう

Visual Studioのパッケージマネージャコンソールを通じてIronPDF NuGetパッケージをインストールすることで始めてください:

Install-Package IronPdf

C#での動的PDF生成方法:フィギュア3 - インストール

または、NuGetパッケージマネージャインターフェースを使用してダウンロードしてインストールします。 ChromePdfRendererを初期化して、ピクセルパーフェクトのPDF生成を行います:

using IronPdf;
// Create Chrome renderer instance
var renderer = new ChromePdfRenderer();
// Configure rendering options for PDF format
renderer.RenderingOptions.MarginTop = 50;
renderer.RenderingOptions.MarginBottom = 50;
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
using IronPdf;
// Create Chrome renderer instance
var renderer = new ChromePdfRenderer();
// Configure rendering options for PDF format
renderer.RenderingOptions.MarginTop = 50;
renderer.RenderingOptions.MarginBottom = 50;
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

ChromePdfRendererクラスは実行時にPDFを生成する基盤を提供します。余白の設定によりヘッダーとフッターのスペースを確保し、PrintHtmlBackgroundsがデザイン要素を保持します。 この設定はHTMLコンテンツに基づいたPDFドキュメントを正確に作成するのに役立ちます。 PDFドキュメントをカスタマイズするためのレンダリングオプションについてさらに学びましょう。

テンプレートを使用してPDFドキュメントを動的に作成する方法

動的なデータ挿入のためのプレースホルダーを含む再利用可能なHTMLテンプレートを作成します:

// Define HTML string template with placeholders
string invoiceTemplate = @"
<html>
<body>
    <h1>Invoice #[[INVOICE_NUMBER]]</h1>
    <p>Date: [[DATE]]</p>
    <p>Customer: [[CUSTOMER_NAME]]</p>
    <table>
        <tr><th>Item</th><th>Price</th></tr>
        [[ITEMS]]
    </table>
    <p><strong>Total: $[[TOTAL]]</strong></p>
</body>
</html>";
// Replace placeholders with dynamic data
var invoiceData = new {
    InvoiceNumber = "INV-2025-001",
    Date = DateTime.Now.ToString("yyyy-MM-dd"),
    CustomerName = "John Doe",
    Total = 1250.00m
};
string finalHtml = invoiceTemplate
    .Replace("[[INVOICE_NUMBER]]", invoiceData.InvoiceNumber)
    .Replace("[[DATE]]", invoiceData.Date)
    .Replace("[[CUSTOMER_NAME]]", invoiceData.CustomerName)
    .Replace("[[TOTAL]]", invoiceData.Total.ToString());
// Generate PDF from populated HTML content
var pdf = renderer.RenderHtmlAsPdf(finalHtml);
pdf.SaveAs("invoice.pdf");
// Define HTML string template with placeholders
string invoiceTemplate = @"
<html>
<body>
    <h1>Invoice #[[INVOICE_NUMBER]]</h1>
    <p>Date: [[DATE]]</p>
    <p>Customer: [[CUSTOMER_NAME]]</p>
    <table>
        <tr><th>Item</th><th>Price</th></tr>
        [[ITEMS]]
    </table>
    <p><strong>Total: $[[TOTAL]]</strong></p>
</body>
</html>";
// Replace placeholders with dynamic data
var invoiceData = new {
    InvoiceNumber = "INV-2025-001",
    Date = DateTime.Now.ToString("yyyy-MM-dd"),
    CustomerName = "John Doe",
    Total = 1250.00m
};
string finalHtml = invoiceTemplate
    .Replace("[[INVOICE_NUMBER]]", invoiceData.InvoiceNumber)
    .Replace("[[DATE]]", invoiceData.Date)
    .Replace("[[CUSTOMER_NAME]]", invoiceData.CustomerName)
    .Replace("[[TOTAL]]", invoiceData.Total.ToString());
// Generate PDF from populated HTML content
var pdf = renderer.RenderHtmlAsPdf(finalHtml);
pdf.SaveAs("invoice.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

このテンプレートアプローチはプレゼンテーションとデータを分離し、デザイナーが複雑なレイアウトを修正しつつ、開発者はデータ統合に集中できるようにします。 ReplaceメソッドはテンプレートIDプレースホルダーを実行時の値で置換し、個別のPDFドキュメントを作成します。 繰り返しセクションを含むHTMLコンテンツを変換するためには、PDF変換前にループを使用してHTMLを動的に構築します。 HTMLを使用したPDF作成の例を探索して、高度なテンプレート作成を学びましょう。

出力

C#での動的PDF生成方法:フィギュア4 - PDF出力

非同期処理を伴う高度なデータバインド

非同期メソッドであなたのPDF生成をスケールアップし、大量処理を行います:

// Async batch generation for multiple PDF documents
public async Task GenerateMonthlyReportsAsync(List<Customer> customers)
{
    var renderer = new ChromePdfRenderer();
    var tasks = new List<Task>();
    foreach (var customer in customers)
    {
        tasks.Add(Task.Run(async () =>
        {
            // Create HTML content with dynamic data
            string html = $@"
                <h2>Monthly Report - {customer.Name}</h2>
                <p>Account Balance: ${customer.Balance:F2}</p>
                <p>Transactions: {customer.TransactionCount}</p>
                <div style='page-break-after: always;'></div>";
            // Convert HTML to PDF format
            var document = await renderer.RenderHtmlAsPdfAsync(html);
            await document.SaveAs($"reports/{customer.Id}_report.pdf");
        }));
    }
    await Task.WhenAll(tasks);
}
// Async batch generation for multiple PDF documents
public async Task GenerateMonthlyReportsAsync(List<Customer> customers)
{
    var renderer = new ChromePdfRenderer();
    var tasks = new List<Task>();
    foreach (var customer in customers)
    {
        tasks.Add(Task.Run(async () =>
        {
            // Create HTML content with dynamic data
            string html = $@"
                <h2>Monthly Report - {customer.Name}</h2>
                <p>Account Balance: ${customer.Balance:F2}</p>
                <p>Transactions: {customer.TransactionCount}</p>
                <div style='page-break-after: always;'></div>";
            // Convert HTML to PDF format
            var document = await renderer.RenderHtmlAsPdfAsync(html);
            await document.SaveAs($"reports/{customer.Id}_report.pdf");
        }));
    }
    await Task.WhenAll(tasks);
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

非同期パターンにより、バッチでPDFドキュメントを生成する際のスループットを大幅に向上させる並行PDF生成が可能になります。 Task.WhenAllはすべてのPDFファイルが完了するまでの進行を確実にします。 上記のコードは各顧客のレポートが新しいページから始まるようにCSSのページ区切りプロパティを使用しています。 企業用ウェブアプリケーション向けに非同期PDF生成のドキュメントを確認してください。

インタラクティブなPDFフォームを動的に作成する

HTMLフォームを含むウェブページをプログラム的に記入可能なPDFに変換します:

// Enable form fields creation in rendering options
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;
// Define HTML string with form elements
string formHtml = @"
<form>
    <h2>Customer Survey</h2>
    <label>Name: 
    <label>Email: 
    <label>Satisfaction:
        <select name='satisfaction'>
            <option>Excellent</option>
            <option>Good</option>
            <option>Fair</option>
        </select>
    </label><br>
    <label>Comments: <textarea name='comments'></textarea></label>
</form>";
// Create a PDF with interactive form fields
var pdfDocument = renderer.RenderHtmlAsPdf(formHtml);
pdfDocument.SaveAs("survey_form.pdf");
// Enable form fields creation in rendering options
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;
// Define HTML string with form elements
string formHtml = @"
<form>
    <h2>Customer Survey</h2>
    <label>Name: 
    <label>Email: 
    <label>Satisfaction:
        <select name='satisfaction'>
            <option>Excellent</option>
            <option>Good</option>
            <option>Fair</option>
        </select>
    </label><br>
    <label>Comments: <textarea name='comments'></textarea></label>
</form>";
// Create a PDF with interactive form fields
var pdfDocument = renderer.RenderHtmlAsPdf(formHtml);
pdfDocument.SaveAs("survey_form.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

CreatePdfFormsFromHtmlを設定することで、HTMLフォーム要素をインタラクティブなPDFフォームフィールドに変換します。 ユーザーはこれらのPDFドキュメントを電子的に記入、保存、送信できます。 この機能は紙のフォームを排除しつつ、慣れ親しんだHTMLの開発パターンを維持してワークフローを効率化します。 PDFDocumentオブジェクトはプログラム的にフォームフィールドを操作するためのアクセスを提供します。 高度な実装のためのPDFフォーム操作について、デジタル署名を含めて学びましょう。

出力

C#での動的PDF生成方法:フィギュア5 - インタラクティブなPDFフォーム出力

他の方法よりIronPDFを選ぶ理由

IronPDFのChromeレンダリングエンジンはピクセルパーフェクトの正確さを確保し、古いWebKitレンダリングエンジンソリューションの妥協を排除します。 外部実行可能ファイルやヘッドレスブラウザセットアップを必要とするオープンソースライブラリアルタナティブとは異なり、IronPDFはゼロ依存でシームレスに統合します。 流暢なAPIと高レベルのAPI設計により、組み込みクラスや複雑なクリスタルレポートの実装よりも優れています。

C#での動的PDF生成方法:フィギュア6 - 機能

C#での動的PDF生成のキーアドバンテージ

  • 他の方法と異なり、完全なJavaScriptの実行が可能
  • ウェブアプリケーションでのスレッドセーフな操作
  • 以下の例パターンを使った包括的な非同期サポート
  • 単純なAPIエンドポイントの構成でページ番号やフォントサイズの制御
  • HTMLからPDFへの変換がChromeと完全に一致

C#での動的PDF生成方法:フィギュア7 - 動的PDF生成 - IronPDF

ライセンスはシングルデベロッパーライセンス向けに$799から始まりますチームや企業向けオプションも利用可能です。 各パッケージには自身の利点があり、開発時間の節約で投資が元を取れます。 購入後直ちにAPIキーにアクセスできます。 最適なNuGetパッケージを見つけるためのライセンスオプションを見る

C#での動的PDF生成方法:フィギュア8 - ライセンス

結論

C#での動的PDF生成は、アプリケーションが実行時に個別のドキュメントを提供する方法を革新します。IronPDFはHTMLコンテンツ、ウェブページ、データソースからPDFファイルを生成するための不可欠なツールを提供します。 そのChromeベースのレンダリングにより、C#のPDFがデザイン仕様に正確に一致し、非同期サポートにより企業規模の処理が可能になります。

以下のコマンドがあなたの旅を始めます:Install-Package IronPdf。 IronPDFを使用することで、HTML文字列を変換し、画像やテーブルを含む複雑なPDFを作成し、ページ番号を追加し、フォントサイズを制御し、任意のデータソースからPDFレポートを生成できます。 各新しいドキュメントはピクセルパーフェクトのレンダリングの恩恵を受け、単純なvarページの作成でも、複数のvarドキュメントインスタンスを持つ複雑なレイアウトでもそうです。

IronPDFの無料30日間トライアルバンドルを開始します。

よくある質問

C# における動的 PDF 生成とは何ですか?

C# における動的 PDF 生成とは、データ駆動コンテンツや個別化されたテンプレートを使用して、実行時に PDF ドキュメントを作成するプロセスを指します。IronPDF は、C# および .NET Framework とのシームレスな統合のための堅牢なツールを提供することで、これを促進します。

なぜ PDF 生成に IronPDF を使用するのか?

IronPDF は、その強力な Chrome ベースのレンダリング エンジンのおかげで、動的に PDF を生成するための主要なソリューションであり、高品質な出力を保証します。C# および .NET Framework とシームレスに統合され、現代の Web アプリケーションに最適です。

IronPDF は C# 開発者をどのようにサポートしますか?

IronPDF は、C# 環境内で個別化された請求書、データ駆動のレポート、カスタマイズされたフォームフィールドなどをすべて作成できるような動的 PDF 生成のための包括的な機能セットを提供することで、C# 開発者をサポートします。

IronPDF における Chrome ベースのレンダリングの利点は何ですか?

IronPDF における Chrome ベースのレンダリングは、複雑なレイアウトやスタイルの完全性を維持した高忠実度 PDF ドキュメントを提供し、生成される PDF が異なる環境でも一貫して見えることを保証します。

IronPDF は HTML コンテンツから PDF を生成できますか?

はい、IronPDF は HTML コンテンツから PDF を生成でき、開発者が Web ページや HTML 文字列、テンプレートをプロフェッショナル品質の PDF ドキュメントに変換することができます。

IronPDF は .NET Framework と互換性がありますか?

IronPDF は .NET Framework と完全に互換性があり、この環境内で動的に PDF を生成する開発者にとって多用途なツールです。

IronPDFを使用して作成できるドキュメントの種類は何ですか?

IronPDF を使用することで、開発者は、C# アプリケーションから動的に生成された、個別化された請求書、データ駆動のレポート、カスタマイズされたフォームフィールドを含む幅広いドキュメントを作成することができます。

IronPDF は多言語 PDF をサポートしていますか?

はい、IronPDF は多言語 PDF の生成をサポートしており、開発者が多様な言語要件に応じるドキュメントを作成することができます。

Curtis Chau
テクニカルライター

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

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。