USING IRONPDF ASP Create PDF on the Fly: Dynamic PDF Generation in .NET Core Curtis Chau 更新:2026年1月21日 下載 IronPDF NuGet 下載 DLL 下載 Windows 安裝程式 開始免費試用 法學碩士副本 法學碩士副本 將頁面複製為 Markdown 格式,用於 LLMs 在 ChatGPT 中打開 請向 ChatGPT 諮詢此頁面 在雙子座打開 請向 Gemini 詢問此頁面 在 Grok 中打開 向 Grok 詢問此頁面 打開困惑 向 Perplexity 詢問有關此頁面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 複製連結 電子郵件文章 使用IronPDF在 ASP.NET Core 中動態建立 PDF,可將 HTML 內容即時轉換為專業的 PDF 文檔,並直接將其串流傳輸給用戶,而無需伺服器端儲存。 在ASP.NET Core中建立現代 Web 應用程式時,動態產生PDF 文件的功能至關重要。 無論你是建立發票、報告還是證書,使用者都希望立即產生 PDF 文件,而無需伺服器端儲存。 IronPDF 的高效率PDF 庫讓您可以輕鬆地在.NET Core 專案中直接建立 PDF。 在本文中,我們將指導您如何在ASP.NET 應用程式中使用HTML 到 PDF 的轉換功能和記憶體流操作來建立PDF 文件。 即時建立 PDF 是什麼意思? 即時建立 PDF 指的是記憶體中動態產生 PDF 文檔,並將其直接傳輸到使用者的瀏覽器。 此伺服器端處理過程消除了將PDF 檔案儲存到磁碟的需要,從而提高了效能和安全性。 透過 IronPDF 的 SDK,您可以立即將HTML 內容轉換為專業的PDF 文檔,非常適合需要在伺服器上儲存文件而建立 PDF 的Web 應用程式。 Chrome 渲染引擎可確保像素級完美輸出,與您的 HTML 設計完全相符。 !{--01001100010010010100001001010010010000010101001001011001010111110100011101000101010101 01000101111101010011010101000100000101010010010101000100010101000100010111110101011101001000110 1010101000100100001011111010100000101001001001111010001000101010101010000110101010100101010101011 10101010001010010010010010010000010100110001011111010000100100110001001111101000011010010111111010000110100101110-- 如何設定 IronPDF 以產生動態 PDF 文件? 首先,透過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 此設定初始化ChromePdfRenderer ,這是 IronPDF 的高效渲染引擎,它使用 Chromium將 HTML 轉換為 PDF文件。 透過建立單一渲染器實例,可以提高重複建立 PDF 時的記憶體使用效率。 了解更多關於HTML 轉 PDF 的進階技巧,包括JavaScript 渲染、 CSS 支援和自訂字體。 有關許可證密鑰配置,請參閱我們的許可指南。 如何從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 方法處理 HTML 內容(包括CSS 樣式),並產生可供下載的專業文件。 此方法支援複雜的佈局、影像,甚至支援JavaScript 執行。 您可以在新標籤頁中查看輸出結果。 如需了解更多進階功能,請探索自訂頁面尺寸、頁首和頁尾以及浮水印。 產生的發票 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生成是如何運作的? 產生的 PDF 報告標題為"月度績效評估",其中包含格式化的內容,展示瞭如何生成實際的業務文檔,包括圖表、指標和詳細分析部分,這些內容均由 HTML 模板渲染而成。 位元組數組方法可讓您完全在記憶體中建立 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 儲存體中新增圖表或影像。 如何處理進階 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 Core中動態建立 PDF 檔案時,請考慮以下優化策略: 非同步操作:產生多個 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 渲染器重複使用:在產生多個 PDF 時,跨請求共享ChromePdfRenderer實例以提高效能。 渲染器是線程安全的,並且能夠有效地處理並發操作。 重複使用渲染器可以節省每次請求的初始化時間。建議實作自訂日誌記錄,以便監控效能和排查問題。 根據微軟的 ASP.NET Core 最佳實踐,最大限度地減少物件分配和重複使用資源是實現高效能 Web 應用程式的關鍵。 有關部署方面,請參閱我們針對Azure 、 AWS 、 Docker和Linux環境的指南。 您也可以實施快取策略來縮短渲染時間。 !{--010011000100100101000010010100100100000101010010010110010101111101001110010101010101010101010101010101010101010 0100010111110100100101001101010100010000010100110001001100010111110100001001001100010011110010101010 關於快速建立 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 串流至瀏覽器。 使用 IronPDF 生成 PDF 有哪些優點? IronPDF 提供功能強大的渲染引擎,可直接在您的 .NET Core 專案中動態建立 PDF,確保立即產生 PDF,而無需伺服器端儲存。 IronPDF 可以用來建立發票和報表嗎? 是的,IronPDF 適合用於建立各種類型的文件,例如發票、報告和證書,這些文件都是在 ASP.NET Core 應用程式中即時產生的。 使用 IronPDF 時,伺服器端儲存是否必要? 不,IronPDF 可讓您直接在瀏覽器上產生 PDF 檔案並將 PDF 檔案串流至瀏覽器,無需伺服器端儲存,效率高且速度快。 什麼樣的應用程式可以從即時產生 PDF 中獲益? 現代網路應用程式,特別是那些需要即時建立文件的應用程式,例如發票系統和報表工具,可以從 IronPDF 提供的即時 PDF 生成功能中獲益良多。 IronPDF 支援 .NET Core 專案嗎? 是的,IronPDF 與 .NET Core 專案完全相容,讓開發人員可以將 PDF 生成功能無縫整合到他們的應用程式中。 Curtis Chau 立即與工程團隊聊天 技術撰稿人 Curtis Chau 擁有電腦科學學士學位(卡爾頓大學),專長於前端開發,精通 Node.js、TypeScript、JavaScript 和 React。Curtis 對製作直覺且美觀的使用者介面充滿熱情,他喜歡使用現代化的架構,並製作結構良好且視覺上吸引人的手冊。除了開發之外,Curtis 對物聯網 (IoT) 也有濃厚的興趣,他喜歡探索整合硬體與軟體的創新方式。在空閒時間,他喜歡玩遊戲和建立 Discord bots,將他對技術的熱愛與創意結合。 相關文章 更新2026年1月22日 How to Create PDF Documents in .NET with IronPDF: Complete Guide Discover effective methods to create PDF files in C# for developers. Enhance your coding skills and streamline your projects. Read the article now! 閱讀更多 更新2026年1月21日 How to Merge PDF Files in VB.NET: Complete Tutorial Merge PDF VB NET with IronPDF. Learn to combine multiple PDF files into one document using simple VB.NET code. Step-by-step examples included. 閱讀更多 更新2026年1月21日 C# PDFWriter Tutorial: Create PDF Documents in .NET Learn to create PDFs efficiently using C# PDFWriter with this step-by-step guide for developers. Read the article to enhance your skills today! 閱讀更多 How to Convert HTML to PDF in ASP.NET using C# with IronPDFCreating a Telerik Blazor PDF Viewe...
更新2026年1月22日 How to Create PDF Documents in .NET with IronPDF: Complete Guide Discover effective methods to create PDF files in C# for developers. Enhance your coding skills and streamline your projects. Read the article now! 閱讀更多
更新2026年1月21日 How to Merge PDF Files in VB.NET: Complete Tutorial Merge PDF VB NET with IronPDF. Learn to combine multiple PDF files into one document using simple VB.NET code. Step-by-step examples included. 閱讀更多
更新2026年1月21日 C# PDFWriter Tutorial: Create PDF Documents in .NET Learn to create PDFs efficiently using C# PDFWriter with this step-by-step guide for developers. Read the article to enhance your skills today! 閱讀更多