使用IRONPDF 使用 IronPDF 進行 .NET 動態 PDF 生成 Curtis Chau 發表日期:12月 3, 2025 下載 IronPDF NuGet 下載 DLL 下載 Windows 安裝程式 開始免費試用 法學碩士副本 法學碩士副本 將頁面複製為 Markdown 格式,用於 LLMs 在 ChatGPT 中打開 請向 ChatGPT 諮詢此頁面 在雙子座打開 請向 Gemini 詢問此頁面 在雙子座打開 請向 Gemini 詢問此頁面 打開困惑 向 Perplexity 詢問有關此頁面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 複製連結 電子郵件文章 現代應用需要的不只是靜態文檔生成。 無論您是在建立需要個人化發票的電子商務平台、提取即時數據以產生 PDF 報告的報告系統,還是創建 PDF 文件和證書的教育平台,動態 PDF 生成都已成為必不可少的功能。 IronPDF簡化了這一複雜的需求,使開發人員能夠專注於業務邏輯,而不是 PDF 文件渲染的複雜性。 本文探討了使用 IronPDF 強大的Chrome 渲染引擎在 .NET 應用程式中建立 PDF 文件的成熟策略。 您將學習如何實現基於模板的 PDF 生成、綁定來自各種資料來源的資料、處理條件內容以及優化資料驅動的文件生成工作流程。 與 DynamicPDF Core Suite 等替代方案不同,IronPDF 提供更簡單的 API,同時保持對數位簽章和合併等其他功能的存取。 到最後,您將擁有建立完整、動態 PDF 生成 .NET 系統所需的工具和知識,該系統可隨著應用程式的需求而擴展。 使用 IronPDF 進行 .NET 動態 PDF 產生:圖 1 - IronPDF .NET 中的動態 PDF 文件產生是什麼? 動態 PDF 產生 .NET 指的是以程式設計方式建立 PDF 文檔,其中內容會根據資料輸入、使用者互動或業務規則而變化。 與包含固定內容的靜態 PDF 不同,資料驅動的 PDF 檔案會根據執行時間條件調整其佈局、文字、表格,甚至整個網頁。 請注意,這種方法優於基於 Java 的庫或基本的 HTML 轉 PDF 轉換器等舊解決方案。 以下是一些程式化創建 PDF 功能表現優異的常見場景: 發票產生:每筆交易的客戶詳細資料、明細項目、總計和付款條款各不相同,用於產生 PDF 文件。 財務報告:圖表、表格和摘要會根據即時市場數據更新,產生 PDF 報告。 證書和文憑:每份 PDF 文件中的收件人姓名、日期和成就均有所不同 法律文件:合約以 PDF 格式自動生成,其中包含客戶特定的條款和條件。 醫療記錄:病患資訊、檢驗結果和治療方案需要以個人化格式儲存在 PDF 檔案中 傳統方法涉及維護多個 PDF 模板或手動編輯文檔,導致過程容易出錯且無法擴展。 動態內容渲染完全實現了這個過程的自動化。 透過IronPDF 的 HTML 轉 PDF 功能,開發人員只需編寫一次程式碼,即可產生數千個 PDF 文檔,每個文檔格式完美,並包含所需的確切資料。 這種運行時生成方法支援跨平台部署,包括 Windows、Linux、macOS 和容器化環境,從而在所有平台上提供相同的功能。 使用者可以搜尋已建立的 PDF 文件中的特定內容。 使用 IronPDF 實現 .NET 動態 PDF 生成:圖 2 - 功能 如何設定 IronPDF 以動態建立 PDF 文件? IronPDF 的上手非常簡單,只需極少的設定。此 PDF 程式庫透過 NuGet 套件安裝,可與任何 .NET 專案(包括 .NET Core 和 .NET Framework)無縫集成,並可在 Windows、Linux、macOS、Docker 和 Azure 上執行。 若要使用最新功能,請確保您使用的是最新版本的 IronPDF NuGet 套件。 使用 IronPDF 實現 .NET 動態 PDF 生成:圖 3 - .NET 動態 PDF 生成 - IronPDF 首先,透過軟體包管理器控制台安裝 IronPDF 軟體包: Install-Package IronPdf 使用 IronPDF 進行 .NET 動態 PDF 產生:圖 4 - 安裝 或使用 .NET CLI 下載該軟體包: dotnet add package IronPdf 對於 MVC 視圖和 Web 應用程序,請參閱文件以取得具體的設定說明。 這是您使用 IronPDF 的RenderHtmlAsPdf方法產生的第一個包含個人化內容的動態 PDF 檔案: using IronPdf; // Initialize with new ChromePdfRenderer for dynamic content var renderer = new ChromePdfRenderer(); // Create dynamic content with runtime data from data source var customerName = "Alexandra Chen"; var orderNumber = "ORD-2024-001"; var totalAmount = 1499.99m; // Generate HTML string dynamically for data-driven PDF var HTML = $@" <h1>Order Confirmation</h1> <p>Dear {customerName},</p> <p>Thank you for your order #{orderNumber}</p> <p>Total Amount: ${totalAmount:F2}</p> <p>Your order will be processed within 24 hours.</p> "; // Convert HTML to PDF dynamically - output as byte array or file var PDF = renderer.RenderHtmlAsPdf(html); pdf.SaveAs("order-confirmation.pdf"); // Optionally get as byte array for streaming byte[] pdfBytes = pdf.BinaryData; using IronPdf; // Initialize with new ChromePdfRenderer for dynamic content var renderer = new ChromePdfRenderer(); // Create dynamic content with runtime data from data source var customerName = "Alexandra Chen"; var orderNumber = "ORD-2024-001"; var totalAmount = 1499.99m; // Generate HTML string dynamically for data-driven PDF var HTML = $@" <h1>Order Confirmation</h1> <p>Dear {customerName},</p> <p>Thank you for your order #{orderNumber}</p> <p>Total Amount: ${totalAmount:F2}</p> <p>Your order will be processed within 24 hours.</p> "; // Convert HTML to PDF dynamically - output as byte array or file var PDF = renderer.RenderHtmlAsPdf(html); pdf.SaveAs("order-confirmation.pdf"); // Optionally get as byte array for streaming byte[] pdfBytes = pdf.BinaryData; IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel 本範例示範了基於模板的 PDF 生成的基本概念:將 HTML 模板與運行時資料結合。 ChromePdfRenderer 物件處理所有複雜的渲染,確保您的 HTML、CSS 甚至 JavaScript 都能像在 Chrome 瀏覽器中一樣完美呈現。 字串插值($@"")允許將 C# 變數無縫整合到 HTML 模板中,使內容真正動態化。 輸出結果可以儲存為文件,也可以作為位元組陣列傳回給使用者進行串流傳輸。 這種方法與 IronPDF 的高級渲染選項無縫配合,可用於微調輸出。 輸出 使用 IronPDF 進行 .NET 動態 PDF 產生:圖 5 - PDF 輸出 動態內容的核心策略有哪些? IronPDF 支援多種 .NET 動態 PDF 產生方法,每種方法都適用於不同的場景。 了解這些策略有助於您根據特定的數據驅動型 PDF 需求選擇合適的方法。 流暢的 API 設計使開發人員能夠直觀地實現。 使用 IronPDF 進行 .NET 動態 PDF 產生:圖 6 - 跨平台相容性 基於模板的佔位符生成 基於模板的生成將設計與資料分離,使維護更加容易,並允許非開發人員修改模板。 這種方法在Stack Overflow 的 PDF 產生討論貼文中被廣泛討論,並被視為最佳實務。請注意,設計人員可以下載並建立範本: using IronPdf; // Define reusable template with placeholders for dynamic content var htmlTemplate = @" <style> .invoice { font-family: Arial; max-width: 800px; } .header { background: #f0f0f0; padding: 20px; } .line-item { border-bottom: 1px solid #ddd; padding: 10px 0; } .label { font-weight: bold; } </style> <div class='invoice'> <div class='header'> <h2>Invoice #{{INVOICE_NUMBER}}</h2> <p>Date: {{INVOICE_DATE}}</p> <p class='label'>Page: <span>{{PAGE_NUMBER}}</span></p> </div> <p>Bill To: {{CUSTOMER_NAME}}</p> <p>Amount Due: ${{TOTAL_AMOUNT}}</p> </div> "; // Replace placeholders with actual data for runtime generation var invoiceHtml = htmlTemplate .Replace("{{INVOICE_NUMBER}}", "INV-2024-1234") .Replace("{{INVOICE_DATE}}", DateTime.Now.ToString("MMM dd, yyyy")) .Replace("{{CUSTOMER_NAME}}", "TechCorp Industries") .Replace("{{TOTAL_AMOUNT}}", "5,750.00") .Replace("{{PAGE_NUMBER}}", "1"); // Generate PDF dynamically from template var renderer = new ChromePdfRenderer(); // Add header with new page numbers renderer.RenderingOptions.TextHeader = new TextHeaderFooter() { CenterText = "Invoice", DrawDividerLine = true }; var PDF = renderer.RenderHtmlAsPdf(invoiceHtml); pdf.SaveAs("invoice.pdf"); using IronPdf; // Define reusable template with placeholders for dynamic content var htmlTemplate = @" <style> .invoice { font-family: Arial; max-width: 800px; } .header { background: #f0f0f0; padding: 20px; } .line-item { border-bottom: 1px solid #ddd; padding: 10px 0; } .label { font-weight: bold; } </style> <div class='invoice'> <div class='header'> <h2>Invoice #{{INVOICE_NUMBER}}</h2> <p>Date: {{INVOICE_DATE}}</p> <p class='label'>Page: <span>{{PAGE_NUMBER}}</span></p> </div> <p>Bill To: {{CUSTOMER_NAME}}</p> <p>Amount Due: ${{TOTAL_AMOUNT}}</p> </div> "; // Replace placeholders with actual data for runtime generation var invoiceHtml = htmlTemplate .Replace("{{INVOICE_NUMBER}}", "INV-2024-1234") .Replace("{{INVOICE_DATE}}", DateTime.Now.ToString("MMM dd, yyyy")) .Replace("{{CUSTOMER_NAME}}", "TechCorp Industries") .Replace("{{TOTAL_AMOUNT}}", "5,750.00") .Replace("{{PAGE_NUMBER}}", "1"); // Generate PDF dynamically from template var renderer = new ChromePdfRenderer(); // Add header with new page numbers renderer.RenderingOptions.TextHeader = new TextHeaderFooter() { CenterText = "Invoice", DrawDividerLine = true }; var PDF = renderer.RenderHtmlAsPdf(invoiceHtml); pdf.SaveAs("invoice.pdf"); IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel 當文件結構一致但資料可變時,這種方法效果極佳。 佔位符( {{}} )清楚地指示動態內容出現的位置,使範本易於閱讀和維護。 您可以將這些模板儲存為文件,從而無需重新編譯應用程式即可輕鬆更新。 了解更多關於IronPDF 範本在進階場景中的應用功能。 IronPDF 的定價使其在大規模基於模板的生成方面具有成本效益。 程序化內容生成 對於需要條件邏輯、循環或計算的複雜場景,程序化 PDF 創建可提供最大的靈活性。 根據微軟關於字串建構的文檔,這種方法可以優化大型文檔的效能。 請注意,使用免費試用版進行開發時無需 API 金鑰: using IronPdf; using System.Text; // Sample data structure from data source var orderItems = new[] { new { Product = "Premium License", Quantity = 5, Price = 399.00m }, new { Product = "Support Package", Quantity = 1, Price = 299.00m }, new { Product = "Training Session", Quantity = 2, Price = 150.00m } }; // Build HTML programmatically with fluent API style var sb = new StringBuilder(); sb.Append("<h2>Order Summary</h2>"); sb.Append("<table style='width:100%; border-collapse: collapse;'>"); sb.Append("<tr style='background:#333; color:white;'>"); sb.Append("<th style='padding:10px;'>Product</th>"); sb.Append("<th>Quantity</th>"); sb.Append("<th>Unit Price</th>"); sb.Append("<th>Total</th></tr>"); decimal grandTotal = 0; foreach (var item in orderItems) { var lineTotal = item.Quantity * item.Price; grandTotal += lineTotal; sb.Append($"<tr>"); sb.Append($"<td style='padding:10px;'>{item.Product}</td>"); sb.Append($"<td style='text-align:center;'>{item.Quantity}</td>"); sb.Append($"<td style='text-align:right;'>${item.Price:F2}</td>"); sb.Append($"<td style='text-align:right;'>${lineTotal:F2}</td>"); sb.Append($"</tr>"); } // Add footer with label sb.Append($"<tr style='font-weight:bold; background:#f0f0f0;'>"); sb.Append($"<td colspan='3' style='padding:10px; text-align:right;'>Grand Total:</td>"); sb.Append($"<td style='text-align:right; padding:10px;'>${grandTotal:F2}</td>"); sb.Append($"</tr>"); sb.Append("</table>"); // Render to PDF with new ChromePdfRenderer var renderer = new ChromePdfRenderer(); var PDF = renderer.RenderHtmlAsPdf(sb.ToString()); // Output as byte array for web download byte[] pdfData = pdf.BinaryData; pdf.SaveAs("order-summary.pdf"); using IronPdf; using System.Text; // Sample data structure from data source var orderItems = new[] { new { Product = "Premium License", Quantity = 5, Price = 399.00m }, new { Product = "Support Package", Quantity = 1, Price = 299.00m }, new { Product = "Training Session", Quantity = 2, Price = 150.00m } }; // Build HTML programmatically with fluent API style var sb = new StringBuilder(); sb.Append("<h2>Order Summary</h2>"); sb.Append("<table style='width:100%; border-collapse: collapse;'>"); sb.Append("<tr style='background:#333; color:white;'>"); sb.Append("<th style='padding:10px;'>Product</th>"); sb.Append("<th>Quantity</th>"); sb.Append("<th>Unit Price</th>"); sb.Append("<th>Total</th></tr>"); decimal grandTotal = 0; foreach (var item in orderItems) { var lineTotal = item.Quantity * item.Price; grandTotal += lineTotal; sb.Append($"<tr>"); sb.Append($"<td style='padding:10px;'>{item.Product}</td>"); sb.Append($"<td style='text-align:center;'>{item.Quantity}</td>"); sb.Append($"<td style='text-align:right;'>${item.Price:F2}</td>"); sb.Append($"<td style='text-align:right;'>${lineTotal:F2}</td>"); sb.Append($"</tr>"); } // Add footer with label sb.Append($"<tr style='font-weight:bold; background:#f0f0f0;'>"); sb.Append($"<td colspan='3' style='padding:10px; text-align:right;'>Grand Total:</td>"); sb.Append($"<td style='text-align:right; padding:10px;'>${grandTotal:F2}</td>"); sb.Append($"</tr>"); sb.Append("</table>"); // Render to PDF with new ChromePdfRenderer var renderer = new ChromePdfRenderer(); var PDF = renderer.RenderHtmlAsPdf(sb.ToString()); // Output as byte array for web download byte[] pdfData = pdf.BinaryData; pdf.SaveAs("order-summary.pdf"); IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel 這種方法在處理可變長度的內容(例如訂單項目或資料表)時非常有效。 StringBuilder 可以有效率地動態建立 HTML,而迴圈可以根據資料來源動態產生表格行。 grandTotal 的計算顯示業務邏輯如何直接整合到文件產生中。 使用者可以立即下載產生的PDF檔案。 輸出 使用 IronPDF 實現 .NET 動態 PDF 產生:圖 7 - HTML 轉 PDF 輸出 如何處理進階動態功能? 除了基本的內容替換之外,IronPDF 還能處理實際應用所需的複雜動態 PDF 生成場景。 這些功能符合 PDF/A 合規標準,可實現文件的長期保存。 使用其他功能無需額外的 API 金鑰。 具有可變行的動態表格 在處理未知大小的資料集以建立資料驅動的 PDF 時,您需要能夠跨頁自動擴展或分頁的表格。 這種模式常用於資料量變化較大的財務報告系統。 用戶可以搜尋已建立的報告: using IronPdf; // Simulate data from database for runtime generation var salesData = Enumerable.Range(1, 25).Select(i => new { Month = $"Month {i}", Revenue = 10000 + (i * 500), Growth = 2.5 + (i * 0.3) }); // Build responsive table for dynamic PDF generation .NET var tableHtml = @" <style> table { width: 100%; border-collapse: collapse; page-break-inside: auto; } th { background: #2c3e50; color: white; padding: 12px; } td { padding: 8px; border-bottom: 1px solid #ddd; } tr:nth-child(even) { background: #f9f9f9; } tr { page-break-inside: avoid; page-break-after: auto; } .page-number { text-align: center; margin-top: 20px; } </style> <h2>Sales Performance Report</h2> <table> <thead> <tr><th>Period</th><th>Revenue</th><th>Growth %</th></tr> </thead> <tbody>"; foreach (var row in salesData) { // Generate table rows dynamically tableHtml += $@" <tr> <td>{row.Month}</td> <td>${row.Revenue:N0}</td> <td>{row.Growth:F1}%</td> </tr>"; } tableHtml += "</tbody></table>"; tableHtml += "<div class='page-number'>Page numbers will appear in footer</div>"; // Configure renderer for optimal table rendering in data-driven PDFs var renderer = new ChromePdfRenderer(); renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4; renderer.RenderingOptions.MarginTop = 40; renderer.RenderingOptions.MarginBottom = 40; // Add footer with page numbers renderer.RenderingOptions.TextFooter = new TextHeaderFooter() { CenterText = "{page} of {total-pages}", FontSize = 10 }; var PDF = renderer.RenderHtmlAsPdf(tableHtml); pdf.SaveAs("sales-report.pdf"); using IronPdf; // Simulate data from database for runtime generation var salesData = Enumerable.Range(1, 25).Select(i => new { Month = $"Month {i}", Revenue = 10000 + (i * 500), Growth = 2.5 + (i * 0.3) }); // Build responsive table for dynamic PDF generation .NET var tableHtml = @" <style> table { width: 100%; border-collapse: collapse; page-break-inside: auto; } th { background: #2c3e50; color: white; padding: 12px; } td { padding: 8px; border-bottom: 1px solid #ddd; } tr:nth-child(even) { background: #f9f9f9; } tr { page-break-inside: avoid; page-break-after: auto; } .page-number { text-align: center; margin-top: 20px; } </style> <h2>Sales Performance Report</h2> <table> <thead> <tr><th>Period</th><th>Revenue</th><th>Growth %</th></tr> </thead> <tbody>"; foreach (var row in salesData) { // Generate table rows dynamically tableHtml += $@" <tr> <td>{row.Month}</td> <td>${row.Revenue:N0}</td> <td>{row.Growth:F1}%</td> </tr>"; } tableHtml += "</tbody></table>"; tableHtml += "<div class='page-number'>Page numbers will appear in footer</div>"; // Configure renderer for optimal table rendering in data-driven PDFs var renderer = new ChromePdfRenderer(); renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4; renderer.RenderingOptions.MarginTop = 40; renderer.RenderingOptions.MarginBottom = 40; // Add footer with page numbers renderer.RenderingOptions.TextFooter = new TextHeaderFooter() { CenterText = "{page} of {total-pages}", FontSize = 10 }; var PDF = renderer.RenderHtmlAsPdf(tableHtml); pdf.SaveAs("sales-report.pdf"); IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel 此範例可處理任意大小的資料集,以透過程式建立 PDF 檔案。 表格會在需要時自動跨頁顯示,並保持表格頭和格式不變。 頁腳的頁碼有助於使用者瀏覽較長的報告。 如需更複雜的表格格式設定和儲存格合併,請參閱 IronPDF 的表格渲染文件。 條件內容區塊 在動態 PDF 產生 .NET 中,實際文件通常需要一些僅在特定條件下才會顯示的章節: using IronPdf; // Business logic determines content for data-driven PDFs var customer = new { Name = "Global Tech Solutions", IsPremium = true, HasDiscount = true, DiscountPercent = 15, LoyaltyPoints = 2500 }; // Build content with conditions for template-based generation var conditionalHtml = $@" <h2>Customer Profile: {customer.Name}</h2> <div style='border: 1px solid #ddd; padding: 20px; margin: 20px 0;'>"; // Premium member section - only shows for premium customers if (customer.IsPremium) { conditionalHtml += @" <div style='background: gold; padding: 10px; margin-bottom: 10px;'> ⭐ PREMIUM MEMBER - Exclusive Benefits Applied </div>"; } // Discount section - only shows if discount exists if (customer.HasDiscount) { conditionalHtml += $@" <div style='background: #e8f5e9; padding: 10px; margin-bottom: 10px;'> 💰 Special Discount: {customer.DiscountPercent}% off all orders </div>"; } // Loyalty points - only shows if points > 0 if (customer.LoyaltyPoints > 0) { conditionalHtml += $@" <div style='background: #f3e5f5; padding: 10px;'> 🎁 Loyalty Points Balance: {customer.LoyaltyPoints:N0} points </div>"; } conditionalHtml += "</div>"; var renderer = new ChromePdfRenderer(); var PDF = renderer.RenderHtmlAsPdf(conditionalHtml); pdf.SaveAs("customer-profile.pdf"); using IronPdf; // Business logic determines content for data-driven PDFs var customer = new { Name = "Global Tech Solutions", IsPremium = true, HasDiscount = true, DiscountPercent = 15, LoyaltyPoints = 2500 }; // Build content with conditions for template-based generation var conditionalHtml = $@" <h2>Customer Profile: {customer.Name}</h2> <div style='border: 1px solid #ddd; padding: 20px; margin: 20px 0;'>"; // Premium member section - only shows for premium customers if (customer.IsPremium) { conditionalHtml += @" <div style='background: gold; padding: 10px; margin-bottom: 10px;'> ⭐ PREMIUM MEMBER - Exclusive Benefits Applied </div>"; } // Discount section - only shows if discount exists if (customer.HasDiscount) { conditionalHtml += $@" <div style='background: #e8f5e9; padding: 10px; margin-bottom: 10px;'> 💰 Special Discount: {customer.DiscountPercent}% off all orders </div>"; } // Loyalty points - only shows if points > 0 if (customer.LoyaltyPoints > 0) { conditionalHtml += $@" <div style='background: #f3e5f5; padding: 10px;'> 🎁 Loyalty Points Balance: {customer.LoyaltyPoints:N0} points </div>"; } conditionalHtml += "</div>"; var renderer = new ChromePdfRenderer(); var PDF = renderer.RenderHtmlAsPdf(conditionalHtml); pdf.SaveAs("customer-profile.pdf"); IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel 每個條件區塊僅在運行時產生過程中滿足特定條件時才會出現。 這種模式可以擴展到任何業務規則——顯示逾期帳戶警告、為特定地區添加法律免責聲明,或根據購買歷史記錄提供促銷優惠。 對於更複雜的條件邏輯,請探索 IronPDF 的高級 HTML 渲染功能。 輸出 使用 IronPDF 進行 .NET 動態 PDF 產生:圖 8 - 動態 PDF 輸出 JavaScript 渲染的動態內容 對於 HTML 到 PDF 的動態內容轉換,IronPDF 會在渲染圖表、圖形和互動元素之前執行 JavaScript。 這項功能對於現代基於網路的報表儀錶板至關重要: using IronPdf; var chartHtml = @" <script src='https://cdn.jsdelivr.net/npm/chart.js'></script> <canvas id='myChart' width='400' height='200'></canvas> <script> // Dynamic chart data for runtime generation var ctx = document.getElementById('myChart').getContext('2d'); new Chart(ctx, { type: 'bar', data: { labels: ['Q1', 'Q2', 'Q3', 'Q4'], datasets: [{ label: 'Revenue (in thousands)', data: [120, 195, 230, 285], backgroundColor: '#3498db' }] } }); </script>"; var renderer = new ChromePdfRenderer(); // Enable JavaScript for dynamic content rendering renderer.RenderingOptions.EnableJavaScript = true; renderer.RenderingOptions.WaitFor.RenderDelay(1000); // Wait for chart rendering var PDF = renderer.RenderHtmlAsPdf(chartHtml); pdf.SaveAs("revenue-chart.pdf"); using IronPdf; var chartHtml = @" <script src='https://cdn.jsdelivr.net/npm/chart.js'></script> <canvas id='myChart' width='400' height='200'></canvas> <script> // Dynamic chart data for runtime generation var ctx = document.getElementById('myChart').getContext('2d'); new Chart(ctx, { type: 'bar', data: { labels: ['Q1', 'Q2', 'Q3', 'Q4'], datasets: [{ label: 'Revenue (in thousands)', data: [120, 195, 230, 285], backgroundColor: '#3498db' }] } }); </script>"; var renderer = new ChromePdfRenderer(); // Enable JavaScript for dynamic content rendering renderer.RenderingOptions.EnableJavaScript = true; renderer.RenderingOptions.WaitFor.RenderDelay(1000); // Wait for chart rendering var PDF = renderer.RenderHtmlAsPdf(chartHtml); pdf.SaveAs("revenue-chart.pdf"); IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel EnableJavaScript 選項可確保 Chart.js 執行以產生資料驅動的 PDF,而 RenderDelay 則提供時間讓圖表完全渲染。 這種方法適用於任何 JavaScript 程式庫——D3.js 用於複雜的可視化,jQuery 用於 DOM 操作,或自訂腳本用於計算。 了解更多關於IronPDF中JavaScript渲染的資訊。 結論 .NET 動態 PDF 產生改變了應用程式處理文件建立的方式。 透過 IronPDF,您已經了解如何實現基於模板的 PDF 生成、處理條件內容、建立帶有動態表格的 PDF 以及建立完整的資料驅動文件生成系統。 IronPDF 的 Chrome 渲染引擎與 .NET 強大的資料處理能力相結合,為執行時間 PDF 產生和文件自動化創造了無限可能。 IronPDF 的程序化 PDF 創建方法既能滿足現代應用程式所需的靈活性,又能保持實施的簡易性。 無論是產生單一個人化憑證還是數千張發票,這裡介紹的策略都可以擴展以滿足您的需求。 該庫支援 PDF 轉換、合併多個 PDF 文件、添加數位簽名以及將內容提取為位元組數組以進行串流傳輸——所有這些都是企業應用程式的基本功能。 免費試用版無需 API 金鑰,並提供所有功能的存取權限,使開發人員能夠徹底測試系統。 有關詳細定價資訊和下載最新功能,請造訪IronPDF 網站。 請注意,所有受支援的平台均提供完整的文件。 立即開始免費試用,在您的應用程式中實施這些動態 PDF 產生策略。 對於生產部署,您可以探索可隨需求擴展的授權選項,並享受 IronPDF 的快速回應工程支援。 使用 IronPDF 實現 .NET 動態 PDF 產生:圖 9 - 許可 常見問題解答 什麼是動態 PDF 生成? 動態 PDF 產生是指根據即時資料輸入即時建立 PDF 文件,而非使用預先存在的靜態範本。 IronPDF 如何幫助 .NET 中的動態 PDF 生成? IronPDF 簡化了動態 PDF 的產生,允許開發人員從 HTML、圖片或其他來源建立 PDF,專注於商業邏輯而非複雜的 PDF 渲染。 使用 IronPDF 生成动态 PDF 有哪些好处? 使用 IronPDF 製作動態 PDF,可以實現個人化、即時資料整合,並降低直接從 .NET 應用程式建立 PDF 文件的複雜度。 IronPDF 可以用於在電子商務平台中產生個人化的發票嗎? 是的,IronPDF 可以透過整合即時資料動態產生個人化的發票,因此非常適合電子商務平台。 哪些類型的應用程式可受益於動態 PDF 生成? 電子商務平台、報表系統和教育平台等應用程式可透過提供客製化的即時文件,從動態 PDF 生成中獲益。 IronPDF 適合用於產生具有即時資料的 PDF 報表嗎? 絕對的,IronPDF 藉由拉取即時資料來產生 PDF 報表,使其成為動態文件產生的完美工具。 IronPDF 如何處理複雜的 PDF 渲染? IronPDF 將複雜的 PDF 演算抽象化,讓開發人員在建立高品質 PDF 的同時,也能專注於應用程式的商業邏輯。 IronPDF 可以動態創建教育證書嗎? 是的,IronPDF 可以透過資料輸入動態產生教育證書,以建立個人化且外觀專業的證書。 IronPDF 是否支援從 HTML 內容建立 PDF? IronPDF 支援從 HTML 內容建立 PDF,讓開發人員可以直接將網頁或 HTML 字串轉換成 PDF 格式。 IronPdf 如何提高開發人員的工作效率? IronPDF 透過提供直接的 PDF 生成 API 來提高開發人員的生產力,減少建立動態文件所需的時間和精力。 Curtis Chau 立即與工程團隊聊天 技術作家 Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。 相關文章 發表日期 12月 18, 2025 .NET PDF API 教學課程(面向 .NET 開發人員) 如何使用 IronPDF 建立 .NET PDF API 閱讀更多 發表日期 12月 18, 2025 如何使用 Aspose C# 和 IronPDF 建立 PDF 本指南將一步步教您如何使用 Aspose C# 和 IronPDF 建立 PDF,專為開發人員設計。 閱讀更多 發表日期 12月 18, 2025 使用 IronPDF 建立 .NET Core PDF 產生器 在 .NET Core 中使用 IronPDF 構建強大的 PDF 生成器。將 HTML 轉換為 PDF,創建發票並生成具有像素完美渲染的報告。 閱讀更多 將 JPEG 轉換為 PDF .NET:完整的 C# 開發人員指南如何在 C# 中使用 iTextSharp ...
發表日期 12月 18, 2025 如何使用 Aspose C# 和 IronPDF 建立 PDF 本指南將一步步教您如何使用 Aspose C# 和 IronPDF 建立 PDF,專為開發人員設計。 閱讀更多
發表日期 12月 18, 2025 使用 IronPDF 建立 .NET Core PDF 產生器 在 .NET Core 中使用 IronPDF 構建強大的 PDF 生成器。將 HTML 轉換為 PDF,創建發票並生成具有像素完美渲染的報告。 閱讀更多