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

ASP で PDF を即座に作成: .NET Core での動的な PDF 生成

IronPDFを使用して HTML コンテンツをプロフェッショナルな PDF ドキュメントに即座に変換し、サーバー側のストレージなしでユーザーに直接ストリーミングすることで、ASP.NET Core で PDF を動的に作成します。

ASP.NET Coreで最新の Web アプリケーションを構築する場合、 PDF ドキュメントを動的に生成する機能が不可欠です。 請求書レポート証明書などを作成する場合、ユーザーはサーバー側のストレージなしでPDF ファイルがすぐに生成されることを期待しています。 IronPDF の効率的なPDF ライブラリを使用すると、 .NET Core プロジェクト内で直接 PDF を簡単に作成できます。

この記事では、 HTML から PDF への変換機能とメモリ ストリーム操作を使用して、 ASP.NET アプリケーションPDF ドキュメントを作成する手順について説明します。

オンザフライで PDF を作成するとはどういう意味ですか?

PDF をオンザフライで作成するということは、PDF ドキュメントをメモリ内に動的に生成し、ユーザーのブラウザに直接ストリーミングすることを意味します。 このサーバー側のプロセスにより、 PDF ファイルをディスクに保存する必要がなくなり、パフォーマンスとセキュリティの両方が向上します。 IronPDF の SDK を使用すると、 HTML コンテンツをプロフェッショナルなPDF ドキュメントに瞬時に変換できます。これは、サーバー上にファイルを保存せずにPDF を作成する必要があるWeb アプリケーションに最適です。 Chrome レンダリング エンジンにより、 HTML デザインと完全に一致するピクセルパーフェクトな出力が保証されます。

今IronPDFを始めましょう。
green arrow pointer

動的な PDF ファイル生成のために IronPDF をどのように設定しますか?

まず、 NuGet パッケージ マネージャーを使用して IronPDF をインストールし、この効果的なPDF ライブラリをASP.NET Core プロジェクトに追加します。

Install-Package IronPdf

次に、ASP.NET Core アプリケーションで IronPDF を構成して、 PDF ファイルを動的に作成します

using IronPdf;
using Microsoft.AspNetCore.Mvc;

namespace PdfGenerator.Controllers
{
    public class DocumentController : Controller
    {
        private readonly ChromePdfRenderer _renderer;

        public DocumentController()
        {
            // Initialize the renderer once for reuse
            _renderer = new ChromePdfRenderer();
            // Optional: Set your license key
            License.LicenseKey = "YOUR-LICENSE-KEY";
        }
    }
}
using IronPdf;
using Microsoft.AspNetCore.Mvc;

namespace PdfGenerator.Controllers
{
    public class DocumentController : Controller
    {
        private readonly ChromePdfRenderer _renderer;

        public DocumentController()
        {
            // Initialize the renderer once for reuse
            _renderer = new ChromePdfRenderer();
            // Optional: Set your license key
            License.LicenseKey = "YOUR-LICENSE-KEY";
        }
    }
}
$vbLabelText   $csharpLabel

このセットアップは、Chromium を使用してHTML を PDF ドキュメントに変換するIronPDF の効率的なレンダリング エンジンであるChromePdfRenderer を初期化します。 単一のレンダラー インスタンスを作成することで、PDF を繰り返し作成するときのメモリ使用量が改善されます。 JavaScript レンダリングCSS サポートカスタム フォントなどの高度なテクニックについては、 HTML から PDF への変換の詳細をご覧ください。 ライセンス キーの構成については、ライセンス ガイドをご覧ください。

HTML コンテンツから PDF ドキュメントを作成するにはどうすればよいでしょうか?

PDF ファイルを作成するためのコア機能は、 HTML 文字列をPDF ドキュメントに変換することです。 以下に、請求書を即座に生成する方法を示す完全な例を示します。

[HttpGet]
public IActionResult GenerateInvoice(int orderId)
{
    // Fetch data from your database or service
    var orderData = GetOrderData(orderId);
    // Build HTML content with dynamic data
    string htmlContent = $@"
        <!DOCTYPE html>
        <html>
        <head>
            <style>
                body {{ font-family: Arial, sans-serif; }}
                .header {{ background-color: #f0f0f0; padding: 20px; }}
                table {{ width: 100%; border-collapse: collapse; }}
                td, th {{ padding: 10px; border: 1px solid #ddd; }}
            </style>
        </head>
        <body>
            <div class='header'>
                <h1>Invoice #{orderData.InvoiceNumber}</h1>
                <p>Date: {DateTime.Now:yyyy-MM-dd}</p>
            </div>
            <table>
                <tr>
                    <th>Item</th>
                    <th>Quantity</th>
                    <th>Price</th>
                </tr>";
    foreach(var item in orderData.Items)
    {
        htmlContent += $@"
                <tr>
                    <td>{item.Name}</td>
                    <td>{item.Quantity}</td>
                    <td>${item.Price:F2}</td>
                </tr>";
    }
    htmlContent += @"
            </table>
        </body>
        </html>";
    // Create PDF from HTML
    var pdf = _renderer.RenderHtmlAsPdf(htmlContent);
    // Convert to byte array for streaming
    byte[] pdfBytes = pdf.BinaryData;
    // Return PDF to browser
    return File(pdfBytes, "application/pdf", $"invoice_{orderId}.pdf");
}
[HttpGet]
public IActionResult GenerateInvoice(int orderId)
{
    // Fetch data from your database or service
    var orderData = GetOrderData(orderId);
    // Build HTML content with dynamic data
    string htmlContent = $@"
        <!DOCTYPE html>
        <html>
        <head>
            <style>
                body {{ font-family: Arial, sans-serif; }}
                .header {{ background-color: #f0f0f0; padding: 20px; }}
                table {{ width: 100%; border-collapse: collapse; }}
                td, th {{ padding: 10px; border: 1px solid #ddd; }}
            </style>
        </head>
        <body>
            <div class='header'>
                <h1>Invoice #{orderData.InvoiceNumber}</h1>
                <p>Date: {DateTime.Now:yyyy-MM-dd}</p>
            </div>
            <table>
                <tr>
                    <th>Item</th>
                    <th>Quantity</th>
                    <th>Price</th>
                </tr>";
    foreach(var item in orderData.Items)
    {
        htmlContent += $@"
                <tr>
                    <td>{item.Name}</td>
                    <td>{item.Quantity}</td>
                    <td>${item.Price:F2}</td>
                </tr>";
    }
    htmlContent += @"
            </table>
        </body>
        </html>";
    // Create PDF from HTML
    var pdf = _renderer.RenderHtmlAsPdf(htmlContent);
    // Convert to byte array for streaming
    byte[] pdfBytes = pdf.BinaryData;
    // Return PDF to browser
    return File(pdfBytes, "application/pdf", $"invoice_{orderId}.pdf");
}
$vbLabelText   $csharpLabel

このコードは、HTML ページ テンプレートとリアルタイム データを組み合わせて動的なPDF ファイルを生成する方法を示しています。 RenderHtmlAsPdf メソッドはCSS スタイルを含む HTML コンテンツを処理し、ダウンロード可能なプロフェッショナルなドキュメントを生成します。 このメソッドは、複雑なレイアウト、画像、さらにはJavaScript の実行もサポートします。 出力は新しいタブで表示できます。 より高度な機能については、カスタム ページ サイズヘッダーとフッター透かしなどを参照してください。

生成された請求書 PDF はどのようになりますか?

! 2025年11月13日の請求書番号123を示すプロフェッショナルなPDF請求書。スタイル設定されたヘッダーセクション、製品A($10.99)と製品B($5.49)を含む整理されたテーブル、カスタムCSSスタイルによる動的なPDF生成機能のデモ。

PDF ファイルをディスクに保存せずにユーザーに直接ストリーミングするにはどうすればよいですか?

PDF をオンザフライでストリーミングするには、メモリ ストリームとバイト配列を操作する必要があります。 このアプローチにより、 PDF ドキュメントがサーバーのファイル システムに触れないことが保証されます。これは、クラウド展開コンテナ化されたアプリケーションにとって非常に重要です。

[HttpPost]
public async Task<IActionResult> CreateReport([FromBody] ReportRequest request)
{
    // Generate HTML from request data
    string html = BuildReportHtml(request);
    // Create PDF in memory
    var pdfDocument = _renderer.RenderHtmlAsPdf(html);
    // Use MemoryStream for efficient streaming
    using (var memoryStream = new MemoryStream())
    {
        // Write PDF binary data to the memory stream
        memoryStream.Write(pdfDocument.BinaryData, 0, pdfDocument.BinaryData.Length);
        // Set response headers for inline display
        Response.Headers.Add("Content-Disposition", "inline; filename=report.pdf");
        // Return FileContentResult with proper content type
        return new FileContentResult(memoryStream.ToArray(), "application/pdf");
    }
}
[HttpPost]
public async Task<IActionResult> CreateReport([FromBody] ReportRequest request)
{
    // Generate HTML from request data
    string html = BuildReportHtml(request);
    // Create PDF in memory
    var pdfDocument = _renderer.RenderHtmlAsPdf(html);
    // Use MemoryStream for efficient streaming
    using (var memoryStream = new MemoryStream())
    {
        // Write PDF binary data to the memory stream
        memoryStream.Write(pdfDocument.BinaryData, 0, pdfDocument.BinaryData.Length);
        // Set response headers for inline display
        Response.Headers.Add("Content-Disposition", "inline; filename=report.pdf");
        // Return FileContentResult with proper content type
        return new FileContentResult(memoryStream.ToArray(), "application/pdf");
    }
}
$vbLabelText   $csharpLabel

メモリベースの PDF 生成はどのように機能しますか?

! HTML テンプレートからレンダリングされたチャート、メトリック、詳細な分析セクションなど、実際のビジネス ドキュメント生成を示すフォーマットされたコンテンツを含む、"月次パフォーマンス レビュー"というタイトルの PDF レポートが生成されました

バイト配列アプローチを使用すると、PDF を完全にメモリ内に作成できます。 コンテンツ タイプ"application/pdf"はブラウザーにファイルの処理方法を指示し、 Content-Disposition ヘッダーはPDF ファイルがブラウザーで開くか、ダウンロードをトリガーするかを決定します。 PDF から MemoryStream への変換の詳細については、ドキュメントをご覧ください。 ユーザーがリクエストを送信するボタンを押すと、サーバーはこのコードを処理して PDF を動的に生成します。 この手法は、ファイル システムへのアクセスが制限される可能性があるAzure FunctionsおよびAWS Lambda のデプロイメントに特に役立ちます。

今すぐ無料トライアルを開始して、動的な PDF 生成を実装しましょう。

動的なデータベース コンテンツから PDF を生成するにはどうすればよいでしょうか?

実際のASP.NET Core アプリケーションでは、データベース クエリからPDF レポートを作成する必要があることがよくあります。 適切なエラー処理を使用して Entity Framework Core データを使用して PDF を生成する方法は次のとおりです。

[HttpGet("report/monthly")]
public async Task<IActionResult> MonthlyReport(int year, int month)
{
    // Query database for report data
    var reportData = await _context.Transactions
        .Where(t => t.Date.Year == year && t.Date.Month == month)
        .GroupBy(t => t.Category)
        .Select(g => new {
            Category = g.Key,
            Total = g.Sum(t => t.Amount),
            Count = g.Count()
        })
        .ToListAsync();
    // Build HTML template with style
    var htmlTemplate = @"<h2>Monthly Report</h2>
                         <table style='width:100%'>";
    foreach(var item in reportData)
    {
        htmlTemplate += $"<tr><td>{item.Category}</td>" +
                       $"<td>{item.Count} items</td>" +
                       $"<td>${item.Total:F2}</td></tr>";
    }
    htmlTemplate += "</table>";
    // Generate PDF document with settings
    var pdf = _renderer.RenderHtmlAsPdf(htmlTemplate);
    // Add metadata to PDF
    pdf.MetaData.Title = $"Report {month}/{year}";
    pdf.MetaData.Author = "Reporting System";
    // Stream PDF to user
    return File(pdf.BinaryData, "application/pdf");
}
[HttpGet("report/monthly")]
public async Task<IActionResult> MonthlyReport(int year, int month)
{
    // Query database for report data
    var reportData = await _context.Transactions
        .Where(t => t.Date.Year == year && t.Date.Month == month)
        .GroupBy(t => t.Category)
        .Select(g => new {
            Category = g.Key,
            Total = g.Sum(t => t.Amount),
            Count = g.Count()
        })
        .ToListAsync();
    // Build HTML template with style
    var htmlTemplate = @"<h2>Monthly Report</h2>
                         <table style='width:100%'>";
    foreach(var item in reportData)
    {
        htmlTemplate += $"<tr><td>{item.Category}</td>" +
                       $"<td>{item.Count} items</td>" +
                       $"<td>${item.Total:F2}</td></tr>";
    }
    htmlTemplate += "</table>";
    // Generate PDF document with settings
    var pdf = _renderer.RenderHtmlAsPdf(htmlTemplate);
    // Add metadata to PDF
    pdf.MetaData.Title = $"Report {month}/{year}";
    pdf.MetaData.Author = "Reporting System";
    // Stream PDF to user
    return File(pdf.BinaryData, "application/pdf");
}
$vbLabelText   $csharpLabel

このパターンを使用すると、任意のデータ ソースから PDF を作成し、データベース レコードをフォーマットされたドキュメントに即座に変換できます。 HTML テンプレート アプローチを使用すると、レポート レイアウトの維持と変更が容易になります。 より複雑なシナリオでは、既存のドキュメントから PDF を作成することも検討できます。 書式設定を改善するには、 CSS 印刷スタイルカスタム余白ページ区切りの使用を検討してください。 Azure Blob Storage からグラフや画像を追加することもできます。

高度な PDF 生成シナリオをどのように処理しますか?

より複雑な要件の場合、IronPDF はオンザフライの PDF 生成を改善するための高度な機能を提供します。

[HttpPost("generate/advanced")]
public async Task<IActionResult> GenerateAdvancedPdf([FromBody] AdvancedRequest request)
{
    // Configure rendering options
    _renderer.RenderingOptions = new ChromePdfRenderOptions()
    {
        PaperSize = PdfPaperSize.A4,
        MarginTop = 40,
        MarginBottom = 40,
        MarginLeft = 20,
        MarginRight = 20,
        EnableJavaScript = true,
        WaitFor = new WaitFor()
        {
            RenderDelay = 500 // Wait for JavaScript execution
        }
    };

    // Add headers and footers
    _renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
    {
        CenterText = request.DocumentTitle,
        DrawDividerLine = true,
        FontSize = 12
    };

    _renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
    {
        LeftText = "{date} {time}",
        RightText = "Page {page} of {total-pages}",
        FontSize = 10
    };

    // Generate PDF with custom settings
    var pdf = await _renderer.RenderHtmlAsPdfAsync(request.HtmlContent);

    // Add security if requested
    if (request.RequirePassword)
    {
        pdf.SecuritySettings.OwnerPassword = "admin_password";
        pdf.SecuritySettings.UserPassword = request.UserPassword;
        pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint;
        pdf.SecuritySettings.AllowUserCopyPasteContent = false;
    }

    return File(pdf.BinaryData, "application/pdf", $"{request.FileName}.pdf");
}
[HttpPost("generate/advanced")]
public async Task<IActionResult> GenerateAdvancedPdf([FromBody] AdvancedRequest request)
{
    // Configure rendering options
    _renderer.RenderingOptions = new ChromePdfRenderOptions()
    {
        PaperSize = PdfPaperSize.A4,
        MarginTop = 40,
        MarginBottom = 40,
        MarginLeft = 20,
        MarginRight = 20,
        EnableJavaScript = true,
        WaitFor = new WaitFor()
        {
            RenderDelay = 500 // Wait for JavaScript execution
        }
    };

    // Add headers and footers
    _renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
    {
        CenterText = request.DocumentTitle,
        DrawDividerLine = true,
        FontSize = 12
    };

    _renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
    {
        LeftText = "{date} {time}",
        RightText = "Page {page} of {total-pages}",
        FontSize = 10
    };

    // Generate PDF with custom settings
    var pdf = await _renderer.RenderHtmlAsPdfAsync(request.HtmlContent);

    // Add security if requested
    if (request.RequirePassword)
    {
        pdf.SecuritySettings.OwnerPassword = "admin_password";
        pdf.SecuritySettings.UserPassword = request.UserPassword;
        pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint;
        pdf.SecuritySettings.AllowUserCopyPasteContent = false;
    }

    return File(pdf.BinaryData, "application/pdf", $"{request.FileName}.pdf");
}
$vbLabelText   $csharpLabel

この例では、レンダリング オプションページ番号セキュリティ設定、および非同期操作を示します。 デジタル署名PDF/A 準拠圧縮透かしを実装することもできます。 マルチスレッドのシナリオでは、IronPDF はスレッドセーフな操作を提供します。

オンザフライ PDF 生成のベストプラクティスは何ですか?

ASP.NET CorePDF ファイルを動的に作成する場合は、次の最適化戦略を検討してください。

非同期操作:複数の PDF を生成するときにサーバーのスレッド プールがブロックされないようにするには、非同期メソッドを使用します。

var pdfTask = _renderer.RenderHtmlAsPdfAsync(htmlContent);
var pdf = await pdfTask;
var pdfTask = _renderer.RenderHtmlAsPdfAsync(htmlContent);
var pdf = await pdfTask;
$vbLabelText   $csharpLabel

メモリ管理:大きなPDF ファイルの場合、リソースを適切に処分し、メモリ使用量を最小限に抑えるために応答に直接ストリーミングすることを検討してください。

using (var pdf = _renderer.RenderHtmlAsPdf(html))
{
    return File(pdf.Stream, "application/pdf");
}
using (var pdf = _renderer.RenderHtmlAsPdf(html))
{
    return File(pdf.Stream, "application/pdf");
}
$vbLabelText   $csharpLabel

レンダラーの再利用: リクエスト間でChromePdfRendererインスタンスを共有して、複数の PDF を生成する際のパフォーマンスを向上させます。 レンダラーはスレッドセーフであり、同時操作を効率的に処理します。 レンダラーを再利用すると、リクエストごとの初期化時間を節約できます。パフォーマンスを監視し、問題をトラブルシューティングするために、カスタムログの実装を検討してください。

Microsoft の ASP.NET Core ベスト プラクティスによれば、オブジェクトの割り当てを最小限に抑え、リソースを再利用することが、高パフォーマンスの Web アプリケーションを実現する鍵となります。 デプロイメントについては、 AzureAWSDockerLinux環境のガイドをご覧ください。 レンダリング時間を短縮するためにキャッシュ戦略を実装することもできます。

NuGet 購入の準備ができていませんか?

PM >  Install-Package IronPdf

IronPDFNuGet でチェックしてください。1000万回以上のダウンロードで、C#によるPDF開発を変革しています。 DLL または Windowsインストーラー をダウンロードすることもできます。

オンザフライで PDF を作成する方法について何を学びましたか?

IronPDF を使用してPDF ドキュメントを即座に作成すると、複雑なドキュメント生成が簡単なコードに変換されます。 シンプルな請求書から複雑なレポートまで、IronPDF の効果的な SDK が面倒な作業を処理してくれるので、ユーザーはアプリケーション ロジックに集中できます。 ディスクに保存せずに PDF を生成してストリーミングできるため、ASP.NET Core アプリケーションの効率とセキュリティが向上します。

IronPDF を使用すると、 HTML コンテンツからPDF を作成し、それをバイト配列としてストリーミングし、プロフェッショナルなドキュメントをユーザーに即座に配信できます。 レポート システム、請求書生成ツール、ドキュメント管理ソリューションを構築する場合でも、IronPDF は信頼性の高い PDF 生成を実装するために必要なすべての機能を提供します。 必要に応じてサポートを受けることもできます。 PDF フォーム注釈ブックマークメタデータ、アクセシビリティのためのPDF/UA 準拠などの追加機能を調べてください。

動的 PDF 機能を使用してASP.NET Core アプリケーションを変換する準備はできていますか? ライセンスを購入すると、すべての機能を利用することができ、当社のエンジニアリング チームから専門的なサポートを受けることができます。 VB.NET 開発者F# 開発者MAUIまたはBlazorを使用する開発者向けに、完全なプラットフォーム サポートを提供します。 詳細なドキュメントについてはAPI リファレンスを確認し、競合他社との比較を調べて、開発者が IronPDF を選択する理由を確認してください。

よくある質問

ASP.NET Core で PDF を動的に生成するにはどうすればよいですか?

IronPDF を使用すると、ファイルをディスクに保存することなく、ASP.NET Core 内で動的に PDF を生成できます。これにより、PDF をブラウザに直接ストリーミングできます。

PDF生成にIronPDFを使用する利点は何ですか?

IronPDF は、.NET Core プロジェクト内で直接動的な PDF 作成を可能にする強力なレンダリング エンジンを提供し、サーバー側のストレージを必要とせずに PDF を即座に生成します。

IronPDF を使用して請求書やレポートを作成できますか?

はい、IronPDF は、請求書、レポート、証明書など、ASP.NET Core アプリケーションでオンザフライで生成されるさまざまな種類のドキュメントの作成に適しています。

IronPDF を使用する場合、サーバー側のストレージは必要ですか?

いいえ、IronPDF を使用すると、サーバー側のストレージを必要とせずに PDF を生成してブラウザーに直接ストリーミングできるため、効率的かつ高速になります。

オンザフライ PDF 生成のメリットを享受できるアプリケーションにはどのようなものがありますか?

最新のWebアプリケーション、特にリアルタイムのドキュメント作成を必要とするアプリは、IronPDFのオンザフライPDF生成から大きなメリットを得られます。

IronPDF は .NET Core プロジェクトをサポートしていますか?

はい、IronPDF は .NET Core プロジェクトと完全に互換性があるため、開発者は PDF 生成機能をアプリケーションにシームレスに統合できます。

カーティス・チャウ
テクニカルライター

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

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