ASP で PDF を即座に作成: .NET Core での動的な PDF 生成
ASP.NET Core で最新の Web アプリケーションを構築する場合、PDF ドキュメントを動的に生成する機能が不可欠です。 請求書、レポート、証明書などを作成する場合、ユーザーはサーバー側のストレージなしで PDF ファイルを即座に生成できることを期待しています。 IronPDF の強力な PDF ライブラリを使用すると、.NET Core プロジェクト内で直接 PDF を簡単に作成できます。
この記事では、ASP.NET アプリケーションで PDF ドキュメントを簡単に即座に作成するために必要な手順について説明します。
オンザフライで PDF を作成するとはどういう意味ですか?
PDF をオンザフライで作成するということは、PDF ドキュメントをメモリ内に動的に生成し、ユーザーのブラウザに直接ストリーミングすることを意味します。 このサーバー側のプロセスにより、PDF ファイルをディスクに保存する必要がなくなり、パフォーマンスとセキュリティの両方が向上します。 IronPDF の SDK を使用すると、HTML コンテンツをプロフェッショナルな PDF ドキュメントに瞬時に変換できます。これは、サーバー上にファイルを保存せずに PDF を作成する必要がある Web アプリケーションに最適です。
動的な 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";
}
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comこのセットアップは、Chromium を使用して HTML を PDF ドキュメントに変換する IronPDF の強力なレンダリング エンジンであるChromePdfRendererを初期化します。 単一のレンダラー インスタンスを作成することにより、PDF を繰り返し作成する際のメモリ使用量を最適化します。 高度なテクニックについては、 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");
}IRON VB CONVERTER ERROR developers@ironsoftware.comこのコードは、HTML ページ テンプレートとリアルタイム データを組み合わせて動的な PDF ファイルを生成する方法を示しています。 RenderHtmlAsPdf メソッドは、CSS スタイルを含む HTML コンテンツを処理し、ダウンロード可能なプロフェッショナルなドキュメントを生成します。 このメソッドは、複雑なレイアウト、画像、さらには JavaScript の実行もサポートします。 出力は新しいタブで表示できます。
出力例
! ASP で PDF を即座に作成: .NET Core での動的な PDF 生成: 画像 1 - ASP.NET プログラムで即座に生成された 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");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.com出力PDFドキュメントの例
! ASP で PDF を即座に作成: .NET Core での動的な PDF 生成: 画像 2 - バイト配列とストリームを使用して作成された PDF
バイト配列アプローチを使用すると、PDF を完全にメモリ内に作成できます。 コンテンツ タイプ"application/pdf"はブラウザーにファイルの処理方法を指示し、Content-Disposition ヘッダーは PDF ファイルがブラウザーで開くか、ダウンロードをトリガーするかを決定します。 PDF から MemoryStream への変換の詳細については、ドキュメントをご覧ください。 ユーザーがリクエストを送信するボタンを押すと、サーバーはこのコードを実行してプロセスを続行します。
今すぐ無料トライアルを開始して、動的な 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");
}IRON VB CONVERTER ERROR developers@ironsoftware.comこのパターンを使用すると、任意のデータ ソースから PDF を作成し、データベース レコードをフォーマットされたドキュメントに即座に変換できます。 HTML テンプレート アプローチを使用すると、レポート レイアウトの維持と変更が容易になります。 より複雑なシナリオのために既存のドキュメントから PDF を作成する方法を調べたり、追加の情報インデックスへのリンクを見つけたりすることもできます。 これが良い例となることを願っています。
オンザフライ PDF 生成のベストプラクティスは何ですか?
ASP.NET Core で PDF ファイルを動的に作成する場合は、次の最適化戦略を検討してください。
非同期操作: 複数の PDF を生成するときにサーバーのスレッド プールがブロックされないようにするには、非同期メソッドを使用します。
var pdfTask = _renderer.RenderHtmlAsPdfAsync(htmlContent);
var pdf = await pdfTask;var pdfTask = _renderer.RenderHtmlAsPdfAsync(htmlContent);
var pdf = await pdfTask;IRON VB CONVERTER ERROR developers@ironsoftware.comメモリ管理: 大きな 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");
}IRON VB CONVERTER ERROR developers@ironsoftware.comレンダラーの再利用: 複数の PDF を生成するときに、リクエスト間で ChromePdfRenderer インスタンスを共有してパフォーマンスを向上させます。 レンダラーはスレッドセーフであり、同時操作を効率的に処理できます。 レンダラーを再利用することで時間を節約できることも事実です。この最適化を見逃さないでください。
Microsoft のASP.NET Core ベスト プラクティスによれば、オブジェクトの割り当てを最小限に抑え、リソースを再利用することが、高パフォーマンスの Web アプリケーションを実現する鍵となります。
結論
IronPDF を使用して PDF ドキュメントを即座に作成すると、複雑なドキュメント生成が簡単なコードに変換されます。 シンプルな請求書から複雑なレポートまで、IronPDF の強力な SDK が面倒な作業を処理してくれるので、ユーザーはアプリケーション ロジックに集中できます。 ディスクに保存せずに PDF を生成してストリーミングできるため、ASP.NET Core アプリケーションの効率とセキュリティが向上します。 私たちは常に新しい機能を統合しており、すべての例からインスピレーションを得ることができます。 これはライブラリの公式 DOC です。
IronPDF を使用すると、HTML コンテンツから PDF を作成し、それをバイト配列としてストリーミングし、プロフェッショナルなドキュメントをユーザーに即座に配信できます。 レポート システム、請求書生成ツール、ドキュメント管理ソリューションを構築する場合でも、IronPDF は強力な PDF 生成を実装するために必要なすべての機能を提供します。 サポートを受けるために新しいメッセージを作成することもできます。 テキストは明確です。
動的 PDF 機能を使用して ASP.NET Core アプリケーションを変換する準備はできていますか? ライセンスを購入すると、すべての機能が利用でき、当社のエンジニアリング チームから専門的なサポートを受けることができます。
よくある質問
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 生成機能をアプリケーションにシームレスに統合できます。






