如何在 C# 中將 HTML 轉換為 PDF(開發者指南)
在 C# 中將 HTML 轉換為 PDF 通常看起來很簡單,直到實際需求出現。 開發人員很快就會遇到影響渲染精度、部署和可擴展性的限制。
除了渲染之外,基礎設施相容性也至關重要。 團隊必須確保 PDF 生成功能能夠在現代 .NET 運行時、雲端平台和容器化環境中正常運行,且不會影響效能。
為了彌補這些差距,現代基於 Chrome 的解決方案(如 IronPDF)提供了更高的渲染保真度、更廣泛的平台支援和可用於生產的部署工作流程——本指南的其餘部分將逐步探討這些內容。
TL;DR:HTML 轉 PDF 快速入門指南
您可以使用IronPDF庫輕鬆地在 C# 中將 HTML 轉換為 PDF,該庫提供了 ChromePdfRenderer.RenderHtmlAsPdf 方法,可以從 HTML、CSS 和JavaScript創建高品質的 PDF 文件。
購買或註冊 IronPDF 30 天試用版後,請尋找寄送至您信箱的許可證金鑰。 請在申請開始時新增您的許可證密鑰。
IronPdf.License.LicenseKey = "KEY";
IronPdf.License.LicenseKey = "KEY";
Imports IronPdf
IronPdf.License.LicenseKey = "KEY"
為什麼.NET開發人員需要C#的HTML轉PDF轉換器
IronPDF 利用嵌入式 Google Chromium 渲染引擎來確保高保真轉換,準確地保留您的網頁內容的佈局和樣式。
✅強大的 Chrome 渲染引擎: Chrome 的 Blink 引擎可實現精確的 HTML 到 PDF 轉換,現在已針對內存、表單和渲染精度進行了修復 (v2025.9.4)
✅像素級精準度:產生的 PDF 檔案與網頁上的版本完全一致,而非列印友善版本。 最近的修復包括自訂頁首/頁腳裁剪、灰階文字保留以及元資料中的特殊字元/表情符號(截至 v2025.9.4)
✅全面支援現代 Web:全面支援 CSS3、HTML5 和 JavaScript,適用於所有 HTML 元素。 最近的改進改變了長文字區域和複選框的表單欄位處理方式。
✅效能提升 5-20 倍:比瀏覽器自動化或 Web 驅動程式快得多,現在修復了記憶體洩漏問題,並減少了批次操作中重複元素(如印章/標題)的檔案大小。
✅ PDF/UA 合規性:產生符合第 508 節標準的無障礙 PDF,並針對跨平台(例如 Linux)表單渲染進行了增強。
✅無外部依賴:無需在伺服器上安裝任何可執行文件
✅ 專為運行在 .NET 10、9、8、7、6(Core、Standard 或 Framework)上的 C#、F# 和 VB.NET 而設計
IronPDF 簡化了 .NET 開發人員的工作流程,提供了一個簡單且有效率的解決方案,可以從 Web 應用程式的 HTML 產生外觀專業的 PDF 文件。 從發票和報表到憑證和檔案,開發人員可以使用他們熟悉的 Web 技術堆疊,而 IronPDF 只需幾行程式碼即可處理複雜的操作。
RELATED: IronPDF Changelog: Updates, milestones, roadmap
您將學到什麼
- [如何將 HTML 字串轉換為 PDF](#how-to-convert-html-string-to-pdf)
- [如何將現有 URL 匯出至 PDF](#how-to-export-existing-url-to-pdf)
- [如何將 HTML 檔案轉換為 PDF](#如何將 HTML 檔案轉換為 PDF)
[如何將Razor Pages 轉換為 PDF](#how-to-convert-razor-pages-to-pdf)
[如何將 MVC 視圖轉換為 PDF](#how-to-convert-mvc-views-to-pdf)
2.如何配置 HTML 轉 PDF 設定 如何設定自訂 HTTP 標頭、Cookie 和登入憑證 如何配置用於 PDF 渲染的代理
- [ 如何為批量 PDF 創建生成 HTML 模板](#how-to-generate-html-template-for-batch-pdf-creation)。
- [如何使用 Async 方法生成 PDF](#how-to-generate-pdf-using-async-method)
- [如何新增進階安全功能](#如何新增進階安全功能)。
[如何將HTML表單轉換為可填寫PDF](#how-to-convert-html-forms-to-fillable-pdfs)
[如何將特定的 HTML 元素轉換為 PDF](#how-to-convert-specific-html-elements-to-pdf)
[如何將已認證頁面渲染為 PDF](#how-to-render-authenticated-pages-to-pdf)
4.如何在雲端平台上將 HTML 部署為 PDF -如何在 Azure 上部署 -如何在 AWS Lambda 上部署 如何使用 Docker 進行部署
- 快速決策矩陣:IronPDF 對比其他 .NET PDF 轉換器。
- Detailed Comparison:IronPDF 與其他 .NET PDF Converters 的比較。
- Real-life HTML to PDF Conversion Comparison:渲染 Reddit 的首頁。
- 性能和 PDF 輸出品質的結論
- 摘要
1. 如何在 C# 中進行 HTML轉PDF
無論您是處理 HTML 字串、URL 還是 HTML 文件,IronPDF 都提供靈活的選項來產生符合您特定要求的高品質 PDF 文件。
在本教程中,我們將帶您了解最常見的場景,包括 HTML 字串轉 PDF、URL 轉 PDF 和 HTML 檔案轉 PDF。 此外,IronPDF 還提供了多種用於操作 PDF 文件的功能:
| 多功能 PDF 轉換 | 動態網頁轉 PDF |
|---|---|
如何將 HTML 字串轉換為 PDF
最基本的操作是將 HTML 字串轉換為 PDF。 這種方法非常適合動態產生的HTML內容。 RenderHtmlAsPdf 方法在直接將 HTML 轉換為 PDF 時完全支援 HTML5、CSS3、 JavaScript和圖像。
使用 IronPDF;
// Create the Chrome renderer
var renderer = new ChromePdfRenderer();
// Convert HTML string to PDF
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello IronPdf</h1>");
// Save the PDF
pdf.SaveAs("output.pdf");
使用 IronPDF;
// Create the Chrome renderer
var renderer = new ChromePdfRenderer();
// Convert HTML string to PDF
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello IronPdf</h1>");
// Save the PDF
pdf.SaveAs("output.pdf");
Imports IronPDF
' Create the Chrome renderer
Dim renderer As New ChromePdfRenderer()
' Convert HTML string to PDF
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Hello IronPdf</h1>")
' Save the PDF
pdf.SaveAs("output.pdf")
當您的 HTML 字串引用本機資源(例如圖片或樣式表)時,請使用 BaseUrlPath 參數來正確轉換包含所有資源的 HTML 內容:
使用 IronPDF;
var renderer = new ChromePdfRenderer();
// Convert HTML content with local image and CSS references
string html = @"
<link rel='stylesheet' href='styles.css'>
<img src='logo.png' alt='Company Logo'>
<h1>Company Report</h1>
<p>Annual report content...</p>";
// Set base path for resolving relative URLs in HTML to PDF conversion
var pdf = renderer.RenderHtmlAsPdf(html, @"C:\MyProject\Assets\");
pdf.SaveAs("report.pdf");
使用 IronPDF;
var renderer = new ChromePdfRenderer();
// Convert HTML content with local image and CSS references
string html = @"
<link rel='stylesheet' href='styles.css'>
<img src='logo.png' alt='Company Logo'>
<h1>Company Report</h1>
<p>Annual report content...</p>";
// Set base path for resolving relative URLs in HTML to PDF conversion
var pdf = renderer.RenderHtmlAsPdf(html, @"C:\MyProject\Assets\");
pdf.SaveAs("report.pdf");
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
' Convert HTML content with local image and CSS references
Dim html As String = "
<link rel='stylesheet' href='styles.css'>
<img src='logo.png' alt='Company Logo'>
<h1>Company Report</h1>
<p>Annual report content...</p>"
' Set base path for resolving relative URLs in HTML to PDF conversion
Dim pdf = renderer.RenderHtmlAsPdf(html, "C:\MyProject\Assets\")
pdf.SaveAs("report.pdf")
RELATED HOW-TO ARTICLE: How to Convert HTML String to PDF in C#
如何將現有 URL 匯出為 PDF
使用 C# 將整個網頁渲染成 PDF 可以讓團隊將 PDF 設計和後端渲染工作分開。 此方法可讓您將任何指定的 URL 直接轉換為 PDF 格式。
列印與螢幕 CSS
您可以配置 IronPDF 使用 CSS 媒體類型進行渲染。
使用 IronPDF;
using IronPdf.Rendering;
// Initialize HTML to PDF converter
var renderer = new ChromePdfRenderer();
// Configure CSS media type for rendering specified URLs
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
// Screen media type shows the entire web page as displayed on screen
使用 IronPDF;
using IronPdf.Rendering;
// Initialize HTML to PDF converter
var renderer = new ChromePdfRenderer();
// Configure CSS media type for rendering specified URLs
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
// Screen media type shows the entire web page as displayed on screen
Imports IronPDF
Imports IronPdf.Rendering
' Initialize HTML to PDF converter
Dim renderer As New ChromePdfRenderer()
' Configure CSS media type for rendering specified URLs
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print
' Screen media type shows the entire web page as displayed on screen
JavaScript 支援
IronPDF 將 HTML 轉換為 PDF 時,完全支援 JavaScript、jQuery 甚至 AJAX。 對於動態 HTML 內容,您可以設定 IronPDF 等待 JavaScript 執行完畢後再將網頁渲染成 PDF。 這非常適合單頁應用程式和動態網站。
使用 IronPDF;
// Configure JavaScript rendering for dynamic HTML content to PDF
var renderer = new ChromePdfRenderer();
// Enable JavaScript execution during PDF generation
renderer.RenderingOptions.EnableJavaScript = true;
// WaitFor.RenderDelay pauses before capturing the HTML
renderer.RenderingOptions.WaitFor.RenderDelay = 500; // milliseconds
使用 IronPDF;
// Configure JavaScript rendering for dynamic HTML content to PDF
var renderer = new ChromePdfRenderer();
// Enable JavaScript execution during PDF generation
renderer.RenderingOptions.EnableJavaScript = true;
// WaitFor.RenderDelay pauses before capturing the HTML
renderer.RenderingOptions.WaitFor.RenderDelay = 500; // milliseconds
Imports IronPDF
' Configure JavaScript rendering for dynamic HTML content to PDF
Dim renderer As New ChromePdfRenderer()
' Enable JavaScript execution during PDF generation
renderer.RenderingOptions.EnableJavaScript = True
' WaitFor.RenderDelay pauses before capturing the HTML
renderer.RenderingOptions.WaitFor.RenderDelay = 500 ' milliseconds
當網頁上的進階 d3.js 和弦圖渲染成 PDF 格式時,也可以顯示 JavaScript 執行情況:
使用 IronPDF;
// Create renderer for JavaScript-heavy HTML
var renderer = new ChromePdfRenderer();
// Convert d3.js visualization web page to PDF
var pdf = renderer.RenderUrlAsPdf("https://bl.ocks.org/mbostock/4062006");
// Save the interactive chart as static PDF
pdf.SaveAs("chart.pdf");
使用 IronPDF;
// Create renderer for JavaScript-heavy HTML
var renderer = new ChromePdfRenderer();
// Convert d3.js visualization web page to PDF
var pdf = renderer.RenderUrlAsPdf("https://bl.ocks.org/mbostock/4062006");
// Save the interactive chart as static PDF
pdf.SaveAs("chart.pdf");
Imports IronPDF
' Create renderer for JavaScript-heavy HTML
Dim renderer As New ChromePdfRenderer()
' Convert d3.js visualization web page to PDF
Dim pdf = renderer.RenderUrlAsPdf("https://bl.ocks.org/mbostock/4062006")
' Save the interactive chart as static PDF
pdf.SaveAs("chart.pdf")
響應式 CSS
由於響應式網頁是設計用於在瀏覽器中查看的,而IronPDF不會在伺服器作業系統中開啟真正的瀏覽器窗口,因此響應式 HTML 元素可能會以最小尺寸呈現。建議在渲染整個網頁時使用 PdfCssMediaType.Print 來解決此問題。
// Configure for optimal responsive design handling in HTML to PDF
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
// Configure for optimal responsive design handling in HTML to PDF
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
```vbnet
' Configure for optimal responsive design handling in HTML to PDF
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
```
RELATED HOW-TO ARTICLE: How to Render URL to PDF
如何將HTML檔案轉換為PDF
將本機 HTML 檔案轉換為 PDF 時,會保留所有相關資源,包括 CSS、圖片和 JavaScript,就像使用 file:// 協定開啟一樣。 這種 HTML 轉 PDF 方法最適合將範本或預先設計的 HTML 頁面轉換為 PDF 文件。
使用 IronPDF;
// Initialize ChromePdfRenderer for HTML file conversion
var renderer = new ChromePdfRenderer();
// Convert HTML file to PDF documents
// Preserves all relative paths and linked resources in HTML
var pdf = renderer.RenderHtmlFileAsPdf("Assets/TestInvoice1.html");
// Save the HTML file as PDF
pdf.SaveAs("Invoice.pdf");
// All CSS, JavaScript, and images load correctly in the generated PDF
使用 IronPDF;
// Initialize ChromePdfRenderer for HTML file conversion
var renderer = new ChromePdfRenderer();
// Convert HTML file to PDF documents
// Preserves all relative paths and linked resources in HTML
var pdf = renderer.RenderHtmlFileAsPdf("Assets/TestInvoice1.html");
// Save the HTML file as PDF
pdf.SaveAs("Invoice.pdf");
// All CSS, JavaScript, and images load correctly in the generated PDF
Imports IronPDF
' Initialize ChromePdfRenderer for HTML file conversion
Dim renderer As New ChromePdfRenderer()
' Convert HTML file to PDF documents
' Preserves all relative paths and linked resources in HTML
Dim pdf = renderer.RenderHtmlFileAsPdf("Assets/TestInvoice1.html")
' Save the HTML file as PDF
pdf.SaveAs("Invoice.pdf")
' All CSS, JavaScript, and images load correctly in the generated PDF
將 HTML 檔案及其資源(CSS、圖像)放在單獨的資料夾中,以便在將 HTML 檔案轉換為 PDF 之前在瀏覽器中進行編輯和測試。 這樣可以確保您的 HTML 程式碼完美渲染,從而產生高品質的 PDF 文件。
RELATED HOW-TO Article: Render HTML File to PDF
如何將Razor Pages 轉換為 PDF
如果您的ASP.NET Core專案已經使用了Razor Pages,您可以直接將其轉換為 PDF,而無需重新建置 HTML。 IronPDF 的Razor擴充功能新增了 RenderRazorToPdf 方法,該方法接受您的 .cshtml 頁面(包含其模型和佈局),並在一次呼叫中將其渲染為 PDF 文件。
PM > Install-Package IronPdf.Extensions.Razor
PM > Install-Package IronPdf.Extensions.Razor
使用 IronPDF;
var renderer = new ChromePdfRenderer();
// Render a Razor Page directly to PDF
PdfDocument pdf = renderer.RenderRazorToPdf(this);
Response.Headers.Add("Content-Disposition", "inline");
return new FileContentResult(pdf.BinaryData, "application/pdf");
使用 IronPDF;
var renderer = new ChromePdfRenderer();
// Render a Razor Page directly to PDF
PdfDocument pdf = renderer.RenderRazorToPdf(this);
Response.Headers.Add("Content-Disposition", "inline");
return new FileContentResult(pdf.BinaryData, "application/pdf");
Imports IronPDF
Dim renderer As New ChromePdfRenderer()
' Render a Razor Page directly to PDF
Dim pdf As PdfDocument = renderer.RenderRazorToPdf(Me)
Response.Headers.Add("Content-Disposition", "inline")
Return New FileContentResult(pdf.BinaryData, "application/pdf")
RELATED HOW-TO Article: How to Convert CSHTML to PDF in Razor Pages
如何將 MVC 視圖轉換為 PDF
使用 MVC 模式的團隊可以直接從現有的視圖和控制器產生 PDF。 安裝 MVC Core 擴充包,然後使用視圖路徑和模型呼叫 RenderRazorViewToPdf — IronPDF處理Razor渲染管道並輸出完成的 PDF。
這對於報告、發票以及任何 HTML 已經在瀏覽器中設計和測試過的頁面尤其有用。 產生的 PDF 檔案保留了完整的視圖輸出,包括佈局頁面和局部視圖。
PM > Install-Package IronPdf.Extensions.Mvc.Core
PM > Install-Package IronPdf.Extensions.Mvc.Core
首先,在 Program.cs 檔案中註冊 IRazorViewRenderer 服務,以便控制器可以注入它:
using IronPdf.Extensions.Mvc.Core;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllersWithViews();
// Register the Razor view renderer for IronPDF
builder.Services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
builder.Services.AddSingleton<IRazorViewRenderer, RazorViewRenderer>();
using IronPdf.Extensions.Mvc.Core;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllersWithViews();
// Register the Razor view renderer for IronPDF
builder.Services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
builder.Services.AddSingleton<IRazorViewRenderer, RazorViewRenderer>();
Imports IronPdf.Extensions.Mvc.Core
Dim builder = WebApplication.CreateBuilder(args)
builder.Services.AddControllersWithViews()
' Register the Razor view renderer for IronPDF
builder.Services.AddSingleton(Of IHttpContextAccessor, HttpContextAccessor)()
builder.Services.AddSingleton(Of IRazorViewRenderer, RazorViewRenderer)()
然後,在控制器操作中,注入渲染器並將任何視圖轉換為 PDF:
使用 IronPDF;
using IronPdf.Extensions.Mvc.Core;
var renderer = new ChromePdfRenderer();
// Render an MVC View with model data to PDF
PdfDocument pdf = renderer.RenderRazorViewToPdf(
_viewRenderService, "Views/Home/Report.cshtml", reportModel);
Response.Headers.Add("Content-Disposition", "inline");
return new FileContentResult(pdf.BinaryData, "application/pdf");
使用 IronPDF;
using IronPdf.Extensions.Mvc.Core;
var renderer = new ChromePdfRenderer();
// Render an MVC View with model data to PDF
PdfDocument pdf = renderer.RenderRazorViewToPdf(
_viewRenderService, "Views/Home/Report.cshtml", reportModel);
Response.Headers.Add("Content-Disposition", "inline");
return new FileContentResult(pdf.BinaryData, "application/pdf");
Imports IronPdf
Imports IronPdf.Extensions.Mvc.Core
Dim renderer As New ChromePdfRenderer()
' Render an MVC View with model data to PDF
Dim pdf As PdfDocument = renderer.RenderRazorViewToPdf(_viewRenderService, "Views/Home/Report.cshtml", reportModel)
Response.Headers.Add("Content-Disposition", "inline")
Return New FileContentResult(pdf.BinaryData, "application/pdf")
RELATED HOW-TO Article: How to Convert Views to PDF in ASP.NET Core MVC
2. 如何配置 HTML 轉 PDF 設定
在處理 PDF 文件方面, IronPDF透過 ChromePdfRenderer.RenderingOptions 屬性為渲染的 PDF 提供廣泛的自訂功能。
| 設定 | 描述 | 範例 |
|---|---|---|
| 紙張大小 | 設定現有PDF文件的頁面尺寸(A4、Letter、Legal等) | `PdfPaperSize.A4` |
| 紙張方向 | 將現有 PDF 設定為縱向或橫向。 | `PdfPaperOrientation.Landscape` |
| 上邊距/下邊距/左邊距/右邊距 | 設定頁面邊距,單位為毫米(預設值:25毫米) | |
| Css媒體類型 | 用於 HTML 轉 PDF 的螢幕或列印 CSS | `PdfCssMediaType.Print` |
| PrintHtml背景 | 包含背景顏色/圖像(預設值:true) | 真實 |
| 啟用 JavaScript | 在渲染 HTML 內容之前執行 JavaScript 程式碼 | 真實 |
| 等待渲染延遲 | 動態 HTML 內容等待時間(毫秒) | 500 |
請參閱以下程式碼片段,以了解操作 PDF 文件的完整設定範例:
使用 IronPDF;
using IronPdf.Rendering;
var renderer = new ChromePdfRenderer();
// Apply print-specific CSS rules
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
// Set custom margins in millimeters
renderer.RenderingOptions.MarginTop = 50;
renderer.RenderingOptions.MarginBottom = 50;
// Enable background colors and images
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
// Set paper size and orientation
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
// Generate PDFs with all settings applied to HTML content
var htmlContent = "<div style='background-color: #f0f0f0; padding: 20px;'><h1>Styled Content</h1></div>";
var pdfDocument = renderer.RenderHtmlAsPdf(htmlContent);
pdfDocument.SaveAs("styled-output.pdf");
使用 IronPDF;
using IronPdf.Rendering;
var renderer = new ChromePdfRenderer();
// Apply print-specific CSS rules
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
// Set custom margins in millimeters
renderer.RenderingOptions.MarginTop = 50;
renderer.RenderingOptions.MarginBottom = 50;
// Enable background colors and images
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
// Set paper size and orientation
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
// Generate PDFs with all settings applied to HTML content
var htmlContent = "<div style='background-color: #f0f0f0; padding: 20px;'><h1>Styled Content</h1></div>";
var pdfDocument = renderer.RenderHtmlAsPdf(htmlContent);
pdfDocument.SaveAs("styled-output.pdf");
Imports IronPdf
Imports IronPdf.Rendering
Dim renderer As New ChromePdfRenderer()
' Apply print-specific CSS rules
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print
' Set custom margins in millimeters
renderer.RenderingOptions.MarginTop = 50
renderer.RenderingOptions.MarginBottom = 50
' Enable background colors and images
renderer.RenderingOptions.PrintHtmlBackgrounds = True
' Set paper size and orientation
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape
' Generate PDFs with all settings applied to HTML content
Dim htmlContent As String = "<div style='background-color: #f0f0f0; padding: 20px;'><h1>Styled Content</h1></div>"
Dim pdfDocument = renderer.RenderHtmlAsPdf(htmlContent)
pdfDocument.SaveAs("styled-output.pdf")
相關操作指南文章:
| 客製化 PDF 轉換 | 精緻 PDF 佈局 |
|---|---|
如何設定自訂 HTTP 標頭、Cookie 和登入憑證
在渲染需要驗證或特定請求元資料的 URL 時, IronPDF可讓您將登入憑證、會話 cookie 和 HTTP 標頭包含在請求中。這使得可以直接將內網儀表板、受限報表或 API 產生的頁面渲染為 PDF,而無需單獨取得 HTML。
對於基本驗證或 NTLM 驗證,請在渲染器上設定 LoginCredentials 物件。 對於基於令牌或基於會話的訪問,在調用 RenderUrlAsPdf 之前,透過 RenderingOptions 傳遞 cookie 和標頭。
使用 IronPDF;
var renderer = new ChromePdfRenderer();
// Network authentication (Basic, Digest, NTLM)
renderer.LoginCredentials = new ChromeHttpLoginCredentials
{
NetworkUsername = "user@domain.com",
NetworkPassword = "securePassword"
};
// Session cookies for authenticated pages
renderer.RenderingOptions.CustomCookies["sessionId"] = "abc123";
// Custom HTTP headers (e.g., Bearer tokens, API keys)
renderer.RenderingOptions.CustomHttpRequestHeaders["Authorization"] = "Bearer eyJhbGciOi...";
var pdf = renderer.RenderUrlAsPdf("https://intranet.company.com/quarterly-report");
pdf.SaveAs("quarterly-report.pdf");
使用 IronPDF;
var renderer = new ChromePdfRenderer();
// Network authentication (Basic, Digest, NTLM)
renderer.LoginCredentials = new ChromeHttpLoginCredentials
{
NetworkUsername = "user@domain.com",
NetworkPassword = "securePassword"
};
// Session cookies for authenticated pages
renderer.RenderingOptions.CustomCookies["sessionId"] = "abc123";
// Custom HTTP headers (e.g., Bearer tokens, API keys)
renderer.RenderingOptions.CustomHttpRequestHeaders["Authorization"] = "Bearer eyJhbGciOi...";
var pdf = renderer.RenderUrlAsPdf("https://intranet.company.com/quarterly-report");
pdf.SaveAs("quarterly-report.pdf");
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
' Network authentication (Basic, Digest, NTLM)
renderer.LoginCredentials = New ChromeHttpLoginCredentials With {
.NetworkUsername = "user@domain.com",
.NetworkPassword = "securePassword"
}
' Session cookies for authenticated pages
renderer.RenderingOptions.CustomCookies("sessionId") = "abc123"
' Custom HTTP headers (e.g., Bearer tokens, API keys)
renderer.RenderingOptions.CustomHttpRequestHeaders("Authorization") = "Bearer eyJhbGciOi..."
Dim pdf = renderer.RenderUrlAsPdf("https://intranet.company.com/quarterly-report")
pdf.SaveAs("quarterly-report.pdf")
相關操作指南文章: Render PDFs Behind Login Authentication | Custom HTTP Request Headers
如何配置PDF渲染的代理
當渲染載入企業代理程式後面的外部資源的 HTML 時,將代理程式位址作為第三個參數傳遞給 RenderHtmlAsPdf()。 這是一個方法參數,而不是 ChromePdfRenderOptions 上的屬性 — 因此它是在每次渲染呼叫時設定的,而不是在渲染器實例上設定的。
對於經過驗證的代理,請使用 http://user:pass@host:port 格式將憑證直接嵌入 URL 中。 使用 Uri.EscapeDataString() 對密碼中的特殊字元進行 URL 編碼。
使用 IronPDF;
var renderer = new ChromePdfRenderer();
// Proxy is the third parameter — not a render option
PdfDocument pdf = renderer.RenderHtmlAsPdf(
"<h1>Report</h1><link rel='stylesheet' href='https://cdn.example.com/styles.css'>",
baseUrlOrPath: null,
proxy: "http://proxy.corp.local:8080"
);
pdf.SaveAs("proxied-report.pdf");
使用 IronPDF;
var renderer = new ChromePdfRenderer();
// Proxy is the third parameter — not a render option
PdfDocument pdf = renderer.RenderHtmlAsPdf(
"<h1>Report</h1><link rel='stylesheet' href='https://cdn.example.com/styles.css'>",
baseUrlOrPath: null,
proxy: "http://proxy.corp.local:8080"
);
pdf.SaveAs("proxied-report.pdf");
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
' Proxy is the third parameter — not a render option
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(
"<h1>Report</h1><link rel='stylesheet' href='https://cdn.example.com/styles.css'>",
baseUrlOrPath:=Nothing,
proxy:="http://proxy.corp.local:8080"
)
pdf.SaveAs("proxied-report.pdf")
請注意,RenderUrlAsPdf() 不接受代理參數。 要渲染代理程式後面的即時 URL,首先使用配置了 WebProxy 的 HttpClient 取得 HTML,然後將其傳遞給 RenderHtmlAsPdf(),並使用代理參數載入資源。
RELATED HOW-TO Article: How to Configure Proxy Servers for PDF Rendering
3. 如何使用進階 PDF 產生和安全功能
利用進階模板、非同步操作和安全功能,解鎖企業級 HTML 轉 PDF 轉換功能。 這些 PDF 處理方法可讓您大規模建立 PDF 文檔,保護敏感的 PDF 文件,並在將 HTML 轉換為專業 PDF 格式時確保文檔的真實性。
如何產生用於批次建立 PDF 的 HTML 模板
基本的批次PDF創建
大量建立 PDF 對於高效產生多個個人化 PDF 文件至關重要。 對於基本場景,C# 中的 String.Format 方法最適合簡單的 PDF 操作。
// Simple HTML templating with String.Format
string htmlTemplate = String.Format("<h1>Hello {0}!</h1>", "World");
// Results in HTML content: <h1>Hello World!</h1>
// Simple HTML templating with String.Format
string htmlTemplate = String.Format("<h1>Hello {0}!</h1>", "World");
// Results in HTML content: <h1>Hello World!</h1>
' Simple HTML templating with String.Format
Dim htmlTemplate As String = String.Format("<h1>Hello {0}!</h1>", "World")
' Results in HTML content: <h1>Hello World!</h1>
對於需要產生 PDF 文件的較長模板,請在 HTML 內容中使用佔位符替換: 使用 IronPDF;
// Define reusable HTML template for PDF files
var htmlTemplate = "<p>Dear [[NAME]],</p><p>Thank you for your order.</p>";
// Customer names for batch PDF conversion processing
var names = new[] { "John", "James", "Jenny" };
// Create personalized PDF documents for each customer
var renderer = new ChromePdfRenderer();
foreach (var name in names)
{
// Replace placeholder with actual data in HTML string
var htmlInstance = htmlTemplate.Replace("[[NAME]]", name);
// Generate personalized PDF document from HTML content
var pdf = renderer.RenderHtmlAsPdf(htmlInstance);
// Save with customer-specific filename as PDF files
pdf.SaveAs($"{name}-invoice.pdf");
}
// Define reusable HTML template for PDF files
var htmlTemplate = "<p>Dear [[NAME]],</p><p>Thank you for your order.</p>";
// Customer names for batch PDF conversion processing
var names = new[] { "John", "James", "Jenny" };
// Create personalized PDF documents for each customer
var renderer = new ChromePdfRenderer();
foreach (var name in names)
{
// Replace placeholder with actual data in HTML string
var htmlInstance = htmlTemplate.Replace("[[NAME]]", name);
// Generate personalized PDF document from HTML content
var pdf = renderer.RenderHtmlAsPdf(htmlInstance);
// Save with customer-specific filename as PDF files
pdf.SaveAs($"{name}-invoice.pdf");
}
' Define reusable HTML template for PDF files
Dim htmlTemplate As String = "<p>Dear [[NAME]],</p><p>Thank you for your order.</p>"
' Customer names for batch PDF conversion processing
Dim names As String() = {"John", "James", "Jenny"}
' Create personalized PDF documents for each customer
Dim renderer As New ChromePdfRenderer()
For Each name In names
' Replace placeholder with actual data in HTML string
Dim htmlInstance As String = htmlTemplate.Replace("[[NAME]]", name)
' Generate personalized PDF document from HTML content
Dim pdf = renderer.RenderHtmlAsPdf(htmlInstance)
' Save with customer-specific filename as PDF files
pdf.SaveAs($"{name}-invoice.pdf")
Next
使用 Handlebars.NET 實作 HTML 到 PDF 的模板化
對於將 HTML 轉換為 PDF 時包含循環和條件語句的複雜模板,請使用高級模板功能,透過 Handlebars.NET 產生具有動態 HTML 內容的 PDF 文件。
# First, install Handlebars.NET for HTML to PDF templating
PM > Install-Package Handlebars.NET
# First, install Handlebars.NET for HTML to PDF templating
PM > Install-Package Handlebars.NET
using HandlebarsDotNet;
使用 IronPDF;
// Define Handlebars template with placeholders for HTML content
var source =
@"<div class=""entry"">
<h1>{{title}}</h1>
<div class=""body"">
{{body}}
</div>
</div>";
// Compile template for reuse in PDF conversion
var template = Handlebars.Compile(source);
// Create data object (can be database records) for HTML to PDF directly
var data = new {
title = "Monthly Report",
body = "Sales increased by 15% this month."
};
// Merge template with data to create HTML content
var htmlResult = template(data);
// Convert templated HTML to PDF using the PDF converter
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(htmlResult);
pdf.SaveAs("monthly-report.pdf");
using HandlebarsDotNet;
使用 IronPDF;
// Define Handlebars template with placeholders for HTML content
var source =
@"<div class=""entry"">
<h1>{{title}}</h1>
<div class=""body"">
{{body}}
</div>
</div>";
// Compile template for reuse in PDF conversion
var template = Handlebars.Compile(source);
// Create data object (can be database records) for HTML to PDF directly
var data = new {
title = "Monthly Report",
body = "Sales increased by 15% this month."
};
// Merge template with data to create HTML content
var htmlResult = template(data);
// Convert templated HTML to PDF using the PDF converter
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(htmlResult);
pdf.SaveAs("monthly-report.pdf");
Imports HandlebarsDotNet
Imports IronPDF
' Define Handlebars template with placeholders for HTML content
Dim source As String =
"<div class=""entry"">
<h1>{{title}}</h1>
<div class=""body"">
{{body}}
</div>
</div>"
' Compile template for reuse in PDF conversion
Dim template = Handlebars.Compile(source)
' Create data object (can be database records) for HTML to PDF directly
Dim data = New With {
.title = "Monthly Report",
.body = "Sales increased by 15% this month."
}
' Merge template with data to create HTML content
Dim htmlResult = template(data)
' Convert templated HTML to PDF using the PDF converter
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(htmlResult)
pdf.SaveAs("monthly-report.pdf")
RELATED HOW-TO ARTICLE: Learn more about Handlebars.NET on GitHub
控制PDF分頁符號:
在轉換 HTML 程式碼片段時,管理產生的 PDF 文件中的分頁可確保獲得專業且易於閱讀的版面配置。使用 CSS 控制 PDF 檔案中的頁面分隔位置。<!DOCTYPE html>
<html>
<head>
<style type="text/css" media="print">
.page {
page-break-after: always;
page-break-inside: avoid;
}
</style>
</head>
<body>
<div class="page">
<h1>Page 1 Content</h1>
</div>
<div class="page">
<h1>Page 2 Content</h1>
</div>
<div class="page">
<h1>Page 3 Content</h1>
</div>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<style type="text/css" media="print">
.page {
page-break-after: always;
page-break-inside: avoid;
}
</style>
</head>
<body>
<div class="page">
<h1>Page 1 Content</h1>
</div>
<div class="page">
<h1>Page 2 Content</h1>
</div>
<div class="page">
<h1>Page 3 Content</h1>
</div>
</body>
</html>
如何使用非同步方法產生 PDF
IronPDF 提供企業級效能,全面支援非同步和多線程,滿足您大規模產生 PDF 檔案時對 HTML 到 PDF 轉換的需求。
使用 IronPDF;
using System.Threading.Tasks;
// Async method for non-blocking PDF generation from HTML content
public async Task<byte[]> GeneratePdfAsync(string html)
{
var renderer = new ChromePdfRenderer();
// Async HTML to PDF conversion preserves thread pool
var pdf = await renderer.RenderHtmlAsPdfAsync(html);
// Return PDF files as byte array for web responses
return pdf.BinaryData;
}
// Concurrent batch PDF generation for multiple HTML strings
public async Task GenerateMultiplePdfsAsync(List<string> html範本)
{
var renderer = new ChromePdfRenderer();
// Create parallel conversion tasks to generate PDF documents
var tasks = html範本.Select(html =>
renderer.RenderHtmlAsPdfAsync(html)
);
// Await all PDF conversions simultaneously
var pdfs = await Task.WhenAll(tasks);
// Save generated PDF files from HTML content
for (int i = 0; i < pdfs.Length; i++)
{
pdfs[i].SaveAs($"document-{i}.pdf");
}
}
使用 IronPDF;
using System.Threading.Tasks;
// Async method for non-blocking PDF generation from HTML content
public async Task<byte[]> GeneratePdfAsync(string html)
{
var renderer = new ChromePdfRenderer();
// Async HTML to PDF conversion preserves thread pool
var pdf = await renderer.RenderHtmlAsPdfAsync(html);
// Return PDF files as byte array for web responses
return pdf.BinaryData;
}
// Concurrent batch PDF generation for multiple HTML strings
public async Task GenerateMultiplePdfsAsync(List<string> html範本)
{
var renderer = new ChromePdfRenderer();
// Create parallel conversion tasks to generate PDF documents
var tasks = html範本.Select(html =>
renderer.RenderHtmlAsPdfAsync(html)
);
// Await all PDF conversions simultaneously
var pdfs = await Task.WhenAll(tasks);
// Save generated PDF files from HTML content
for (int i = 0; i < pdfs.Length; i++)
{
pdfs[i].SaveAs($"document-{i}.pdf");
}
}
Imports IronPDF
Imports System.Threading.Tasks
' Async method for non-blocking PDF generation from HTML content
Public Async Function GeneratePdfAsync(html As String) As Task(Of Byte())
Dim renderer As New ChromePdfRenderer()
' Async HTML to PDF conversion preserves thread pool
Dim pdf = Await renderer.RenderHtmlAsPdfAsync(html)
' Return PDF files as byte array for web responses
Return pdf.BinaryData
End Function
' Concurrent batch PDF generation for multiple HTML strings
Public Async Function GenerateMultiplePdfsAsync(html範本 As List(Of String)) As Task
Dim renderer As New ChromePdfRenderer()
' Create parallel conversion tasks to generate PDF documents
Dim tasks = html範本.Select(Function(html) renderer.RenderHtmlAsPdfAsync(html))
' Await all PDF conversions simultaneously
Dim pdfs = Await Task.WhenAll(tasks)
' Save generated PDF files from HTML content
For i As Integer = 0 To pdfs.Length - 1
pdfs(i).SaveAs($"document-{i}.pdf")
Next
End Function
- 使用 64 位元系統可獲得最佳 PDF 生成效能。
- 產生 PDF 文件時,請確保伺服器資源充足(避免使用效能不足的免費方案)。
- 為 HTML 內容中複雜的 JavaScript 提供足夠的渲染延遲。
- 盡可能重複使用
ChromePdfRenderer實例。 - 利用 v2025.9.4 的記憶體修復程序對批次/非同步操作進行最佳化,以減少資源使用; 測試重複自訂頁首/頁尾能否減少檔案大小。
RELATED HOW-TO Article: How to Generate PDFs with Async and Multithreading
如何新增進階安全功能
如何在 .NET 中為 PDF 檔案新增密碼保護
將 HTML 內容轉換為受保護的 PDF 格式時,請使用密碼和權限保護產生的敏感 PDF 文件。
使用 IronPDF;
var renderer = new ChromePdfRenderer();
// Convert HTML to PDF with security
var pdf = renderer.RenderHtmlAsPdf("<h1>Confidential Report</h1>");
// Configure security settings for PDF files
pdf.SecuritySettings.UserPassword = "user123"; // Password to open PDF documents
pdf.SecuritySettings.OwnerPassword = "owner456"; // Password to modify PDF files
// Set granular permissions for PDF format
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserAnnotations = false;
pdf.SecuritySettings.AllowUserPrinting = PrintPermissions.LowQualityPrint;
// Apply strong encryption to PDF documents
pdf.SecuritySettings.EncryptionAlgorithm = PdfEncryptionAlgorithm.AES256;
pdf.SaveAs("secure-document.pdf");
使用 IronPDF;
var renderer = new ChromePdfRenderer();
// Convert HTML to PDF with security
var pdf = renderer.RenderHtmlAsPdf("<h1>Confidential Report</h1>");
// Configure security settings for PDF files
pdf.SecuritySettings.UserPassword = "user123"; // Password to open PDF documents
pdf.SecuritySettings.OwnerPassword = "owner456"; // Password to modify PDF files
// Set granular permissions for PDF format
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserAnnotations = false;
pdf.SecuritySettings.AllowUserPrinting = PrintPermissions.LowQualityPrint;
// Apply strong encryption to PDF documents
pdf.SecuritySettings.EncryptionAlgorithm = PdfEncryptionAlgorithm.AES256;
pdf.SaveAs("secure-document.pdf");
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
' Convert HTML to PDF with security
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Confidential Report</h1>")
' Configure security settings for PDF files
pdf.SecuritySettings.UserPassword = "user123" ' Password to open PDF documents
pdf.SecuritySettings.OwnerPassword = "owner456" ' Password to modify PDF files
' Set granular permissions for PDF format
pdf.SecuritySettings.AllowUserCopyPasteContent = False
pdf.SecuritySettings.AllowUserAnnotations = False
pdf.SecuritySettings.AllowUserPrinting = PrintPermissions.LowQualityPrint
' Apply strong encryption to PDF documents
pdf.SecuritySettings.EncryptionAlgorithm = PdfEncryptionAlgorithm.AES256
pdf.SaveAs("secure-document.pdf")
如何為 PDF 檔案添加數位簽名
從 HTML 內容產生 PDF 檔案時,新增加密簽名以確保 PDF 文件的真實性。
使用 IronPDF;
using IronPdf.Signing;
var renderer = new ChromePdfRenderer();
// Generate PDF from HTML page
var pdf = renderer.RenderHtmlAsPdf("<h1>Contract Agreement</h1>");
// Create digital signature with certificate for PDF files
var signature = new PdfSignature("certificate.pfx", "password")
{
SigningContact = "legal@company.com",
SigningLocation = "New York, NY",
SigningReason = "Contract Approval",
SignerName = "Authorized Signer" // New property in v2025.8.8 for enhanced signature details
};
// Apply signature to PDF documents
pdf.Sign(signature);
pdf.SaveAs("signed-contract.pdf");
使用 IronPDF;
using IronPdf.Signing;
var renderer = new ChromePdfRenderer();
// Generate PDF from HTML page
var pdf = renderer.RenderHtmlAsPdf("<h1>Contract Agreement</h1>");
// Create digital signature with certificate for PDF files
var signature = new PdfSignature("certificate.pfx", "password")
{
SigningContact = "legal@company.com",
SigningLocation = "New York, NY",
SigningReason = "Contract Approval",
SignerName = "Authorized Signer" // New property in v2025.8.8 for enhanced signature details
};
// Apply signature to PDF documents
pdf.Sign(signature);
pdf.SaveAs("signed-contract.pdf");
Imports IronPdf
Imports IronPdf.Signing
Dim renderer As New ChromePdfRenderer()
' Generate PDF from HTML page
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Contract Agreement</h1>")
' Create digital signature with certificate for PDF files
Dim signature As New PdfSignature("certificate.pfx", "password") With {
.SigningContact = "legal@company.com",
.SigningLocation = "New York, NY",
.SigningReason = "Contract Approval",
.SignerName = "Authorized Signer" ' New property in v2025.8.8 for enhanced signature details
}
' Apply signature to PDF documents
pdf.Sign(signature)
pdf.SaveAs("signed-contract.pdf")
RELATED HOW-TO Article: Digitally Signing PDF Documents with C#
如何將HTML表單轉換為可填寫PDF
若要將標準 HTML 表單元素轉換為互動式、可填寫的 PDF 表單字段,請啟用 CreatePdfFormsFromHtml 渲染選項。 這樣可以將文字輸入方塊、複選框、單選按鈕和下拉式選單保留為產生的 PDF 文件中的可編輯欄位。
使用 IronPDF;
var renderer = new ChromePdfRenderer();
// Enable HTML form to PDF form conversion
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;
string htmlForm = @"
<h2>Employee Onboarding Form</h2>
<form>
<label>Full Name:</label>
<input type='text' name='fullName' value='' /><br/>
<label>Department:</label>
<select name='department'>
<option value='engineering'>Engineering</option>
<option value='marketing'>Marketing</option>
<option value='sales'>Sales</option>
</select><br/>
<label>Agree to Terms:</label>
<input type='checkbox' name='agreeTerms' />
</form>";
var pdf = renderer.RenderHtmlAsPdf(htmlForm);
pdf.SaveAs("onboarding-form.pdf");
使用 IronPDF;
var renderer = new ChromePdfRenderer();
// Enable HTML form to PDF form conversion
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;
string htmlForm = @"
<h2>Employee Onboarding Form</h2>
<form>
<label>Full Name:</label>
<input type='text' name='fullName' value='' /><br/>
<label>Department:</label>
<select name='department'>
<option value='engineering'>Engineering</option>
<option value='marketing'>Marketing</option>
<option value='sales'>Sales</option>
</select><br/>
<label>Agree to Terms:</label>
<input type='checkbox' name='agreeTerms' />
</form>";
var pdf = renderer.RenderHtmlAsPdf(htmlForm);
pdf.SaveAs("onboarding-form.pdf");
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
' Enable HTML form to PDF form conversion
renderer.RenderingOptions.CreatePdfFormsFromHtml = True
Dim htmlForm As String = "
<h2>Employee Onboarding Form</h2>
<form>
<label>Full Name:</label>
<input type='text' name='fullName' value='' /><br/>
<label>Department:</label>
<select name='department'>
<option value='engineering'>Engineering</option>
<option value='marketing'>Marketing</option>
<option value='sales'>Sales</option>
</select><br/>
<label>Agree to Terms:</label>
<input type='checkbox' name='agreeTerms' />
</form>"
Dim pdf = renderer.RenderHtmlAsPdf(htmlForm)
pdf.SaveAs("onboarding-form.pdf")
name 屬性。 重複的名稱會導致產生的 PDF 檔案中的欄位值相同,從而導致使用者填寫表單時出現意外情況。
RELATED HOW-TO Article: How to Create Fillable PDF Forms in C#
如何將特定 HTML 元素轉換為 PDF
要渲染頁面的特定部分而不是整個文檔,請在渲染之前隔離目標元素。 最直接的方法是使用 JavaScript 渲染選項將文件主體替換為目標元素的內容,並結合 WaitFor.HtmlQuerySelector() 來確保元素在提取之前存在。 下面的程式碼片段保留了 document.head,以便樣式表和字體能夠保留下來——如果沒有這一步,依賴祖先選擇器的 CSS 規則將在提取的 PDF 中丟失。
對於可以存取原始 HTML 的伺服器端場景,可以使用 AngleSharp 等解析器提取目標片段,並將其傳遞給 RenderHtmlAsPdf() — 無需執行JavaScript 。
使用 IronPDF;
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.EnableJavaScript = true;
// Replace the body with only the target element
renderer.RenderingOptions.JavaScript = @"
var el = document.querySelector('#invoice-summary');
if (el) {
var head = document.head.innerHTML;
document.body.innerHTML = el.outerHTML;
document.head.innerHTML = head;
}
";
// Wait for the target element before JS executes
renderer.RenderingOptions.WaitFor.HtmlQuerySelector("#invoice-summary", 10000);
var pdf = renderer.RenderHtmlAsPdf(fullPageHtml);
pdf.SaveAs("invoice-summary.pdf");
使用 IronPDF;
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.EnableJavaScript = true;
// Replace the body with only the target element
renderer.RenderingOptions.JavaScript = @"
var el = document.querySelector('#invoice-summary');
if (el) {
var head = document.head.innerHTML;
document.body.innerHTML = el.outerHTML;
document.head.innerHTML = head;
}
";
// Wait for the target element before JS executes
renderer.RenderingOptions.WaitFor.HtmlQuerySelector("#invoice-summary", 10000);
var pdf = renderer.RenderHtmlAsPdf(fullPageHtml);
pdf.SaveAs("invoice-summary.pdf");
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.EnableJavaScript = True
' Replace the body with only the target element
renderer.RenderingOptions.JavaScript = "
var el = document.querySelector('#invoice-summary');
if (el) {
var head = document.head.innerHTML;
document.body.innerHTML = el.outerHTML;
document.head.innerHTML = head;
}
"
' Wait for the target element before JS executes
renderer.RenderingOptions.WaitFor.HtmlQuerySelector("#invoice-summary", 10000)
Dim pdf = renderer.RenderHtmlAsPdf(fullPageHtml)
pdf.SaveAs("invoice-summary.pdf")
RELATED HOW-TO Article: How to Convert HTML Elements and Partial Pages to PDF
如何將已認證頁面渲染為 PDF
有三種機制可以渲染位於驗證之後的頁面:網路登入憑證、自訂 cookie 和 HTTP 請求標頭。 這些涵蓋了將受保護的 Web 內容轉換為 PDF 時最常見的身份驗證場景。
登入憑證
將受保護的 URL 轉換為 PDF 時,請使用 ChromeHttpLoginCredentials 進行基本驗證、摘要式驗證或 NTLM 驗證。
使用 IronPDF;
var renderer = new ChromePdfRenderer();
// Configure network authentication
renderer.LoginCredentials = new ChromeHttpLoginCredentials
{
NetworkUsername = "user@domain.com",
NetworkPassword = "securePassword",
AuthenticationType = ChromeHttpLoginCredentials.AuthType.Basic
};
var pdf = renderer.RenderUrlAsPdf("https://intranet.company.com/reports");
pdf.SaveAs("authenticated-report.pdf");
使用 IronPDF;
var renderer = new ChromePdfRenderer();
// Configure network authentication
renderer.LoginCredentials = new ChromeHttpLoginCredentials
{
NetworkUsername = "user@domain.com",
NetworkPassword = "securePassword",
AuthenticationType = ChromeHttpLoginCredentials.AuthType.Basic
};
var pdf = renderer.RenderUrlAsPdf("https://intranet.company.com/reports");
pdf.SaveAs("authenticated-report.pdf");
Imports IronPDF
Dim renderer As New ChromePdfRenderer()
' Configure network authentication
renderer.LoginCredentials = New ChromeHttpLoginCredentials With {
.NetworkUsername = "user@domain.com",
.NetworkPassword = "securePassword",
.AuthenticationType = ChromeHttpLoginCredentials.AuthType.Basic
}
Dim pdf = renderer.RenderUrlAsPdf("https://intranet.company.com/reports")
pdf.SaveAs("authenticated-report.pdf")
Cookie 和 HTTP 標頭
對於基於令牌或基於會話的身份驗證,請將自訂 cookie 和 HTTP 標頭直接附加到渲染請求中。
使用 IronPDF;
var renderer = new ChromePdfRenderer();
// Add session cookies
renderer.RenderingOptions.CustomCookies["sessionId"] = "abc123token";
renderer.RenderingOptions.CustomCookies["authToken"] = "bearer-xyz";
// Add custom HTTP headers (e.g., API key or Bearer token)
renderer.RenderingOptions.CustomHttpRequestHeaders["Authorization"] = "Bearer eyJhbGciOi...";
var pdf = renderer.RenderUrlAsPdf("https://app.example.com/dashboard");
pdf.SaveAs("dashboard.pdf");
使用 IronPDF;
var renderer = new ChromePdfRenderer();
// Add session cookies
renderer.RenderingOptions.CustomCookies["sessionId"] = "abc123token";
renderer.RenderingOptions.CustomCookies["authToken"] = "bearer-xyz";
// Add custom HTTP headers (e.g., API key or Bearer token)
renderer.RenderingOptions.CustomHttpRequestHeaders["Authorization"] = "Bearer eyJhbGciOi...";
var pdf = renderer.RenderUrlAsPdf("https://app.example.com/dashboard");
pdf.SaveAs("dashboard.pdf");
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
' Add session cookies
renderer.RenderingOptions.CustomCookies("sessionId") = "abc123token"
renderer.RenderingOptions.CustomCookies("authToken") = "bearer-xyz"
' Add custom HTTP headers (e.g., API key or Bearer token)
renderer.RenderingOptions.CustomHttpRequestHeaders("Authorization") = "Bearer eyJhbGciOi..."
Dim pdf = renderer.RenderUrlAsPdf("https://app.example.com/dashboard")
pdf.SaveAs("dashboard.pdf")
對於基於 HTML 表單的登入(POST 使用者名稱/密碼),請考慮先使用 HttpClient 進行驗證,然後將產生的 cookie 傳遞給 CustomCookies 字典以渲染受保護的頁面。
RELATED HOW-TO Article: How to Convert HTML Behind Login Authentication to PDF
4. 如何在雲端平台上將 HTML 部署為 PDF
在雲端環境中部署 HTML 到 PDF 的轉換需要對無頭渲染、臨時檔案路徑和資源分配進行特定配置。 本節涵蓋了IronPDF最常見的雲端平台和容器化部署。
| 平台 | 最低資源 | 包裹 | 自動配置 | 溫度路徑 | 關鍵陷阱 |
|---|---|---|---|---|---|
| Azure 應用程式服務 | B1級(基礎) | IronPDF |
true
|
/tmp | 免費/共享套餐失敗-無GPU,記憶體不足 |
| Azure Functions(Windows) | B1級 | IronPDF |
true
|
/tmp | 取消選取"從程式包檔案執行" |
| AWS Lambda | 512 MB / 330 秒逾時 | IronPDF |
true
|
/tmp(必填) | 預設檔案系統為唯讀。 |
| Docker(Ubuntu/Debian) | 影像相關 | IronPDF |
false
|
圖片預設 |
設定為false — Dockerfile 處理依賴項
|
如何在 Azure 上部署
部署至 Azure Functions 或 App Service 時,請停用 GPU 加速,並確保您的託管層為基於 Chrome 的渲染提供足夠的記憶體。 在應用程式啟動時,在任何渲染調用之前添加這些設定。
Azure 沙箱以無頭模式運作,無法存取 GPU,且免費/共用層(F1、D1)缺少 Chrome 所需的資源。 目標是達到B1(基礎)等級或更高。
使用 IronPDF;
// Azure sandboxes block GPU access — always disable
IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;
// Required on non-GUI Linux systems
IronPdf.Installation.LinuxAndDockerDependencies自動配置 = true;
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Azure PDF Report</h1>");
pdf.SaveAs("azure-report.pdf");
使用 IronPDF;
// Azure sandboxes block GPU access — always disable
IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;
// Required on non-GUI Linux systems
IronPdf.Installation.LinuxAndDockerDependencies自動配置 = true;
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Azure PDF Report</h1>");
pdf.SaveAs("azure-report.pdf");
Imports IronPdf
' Azure sandboxes block GPU access — always disable
IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled
' Required on non-GUI Linux systems
IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = True
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Azure PDF Report</h1>")
pdf.SaveAs("azure-report.pdf")
RELATED GET-STARTED Guide: How to Deploy IronPDF on Azure
如何在 AWS Lambda 上部署
AWS Lambda 要求基於 Docker 的部署才能實現基於 Chrome 的 PDF 渲染。 預設的 Lambda 檔案系統是唯讀的,因此所有臨時和部署路徑都必須指向 /tmp。
請在函數處理程序的頂部,在任何渲染呼叫之前配置這些設定。
using Amazon.Lambda.Core;
使用 IronPDF;
public class PdfFunction
{
public string FunctionHandler(string input, ILambdaContext context)
{
// Lambda's only writable directory
var tmpPath = "/tmp/";
IronPdf.Installation.TempFolderPath = tmpPath;
IronPdf.Installation.CustomDeploymentDirectory = tmpPath;
IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;
// Let IronPDF install Chrome dependencies on first cold start
IronPdf.Installation.LinuxAndDockerDependencies自動配置 = true;
context.Logger.LogLine("Rendering PDF...");
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(input);
// Save to /tmp before uploading to S3 or returning
var outputPath = $"{tmpPath}output.pdf";
pdf.SaveAs(outputPath);
return outputPath;
}
}
using Amazon.Lambda.Core;
使用 IronPDF;
public class PdfFunction
{
public string FunctionHandler(string input, ILambdaContext context)
{
// Lambda's only writable directory
var tmpPath = "/tmp/";
IronPdf.Installation.TempFolderPath = tmpPath;
IronPdf.Installation.CustomDeploymentDirectory = tmpPath;
IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;
// Let IronPDF install Chrome dependencies on first cold start
IronPdf.Installation.LinuxAndDockerDependencies自動配置 = true;
context.Logger.LogLine("Rendering PDF...");
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(input);
// Save to /tmp before uploading to S3 or returning
var outputPath = $"{tmpPath}output.pdf";
pdf.SaveAs(outputPath);
return outputPath;
}
}
Imports Amazon.Lambda.Core
Imports IronPdf
Public Class PdfFunction
Public Function FunctionHandler(input As String, context As ILambdaContext) As String
' Lambda's only writable directory
Dim tmpPath As String = "/tmp/"
IronPdf.Installation.TempFolderPath = tmpPath
IronPdf.Installation.CustomDeploymentDirectory = tmpPath
IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled
' Let IronPDF install Chrome dependencies on first cold start
IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = True
context.Logger.LogLine("Rendering PDF...")
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(input)
' Save to /tmp before uploading to S3 or returning
Dim outputPath As String = $"{tmpPath}output.pdf"
pdf.SaveAs(outputPath)
Return outputPath
End Function
End Class
RELATED GET-STARTED Guide: How to Deploy IronPDF on AWS Lambda
如何使用 Docker 進行部署
對於 Docker 部署,請使用 IronPdf.Linux NuGet套件來減少映像大小並避免執行時間資源下載。 該軟體包包含預先打包的、針對容器化環境優化的 Linux 原生二進位。
當您的 Dockerfile 已經透過 apt-get 安裝 Chrome 的共用程式庫依賴項時,請設定 LinuxAndDockerDependencies自動配置 = false。 在這種情況下,運行時自動安裝是多餘的,並且可能導致權限錯誤或更長的冷啟動時間。
| 平台 | 包裹 | 關鍵配置 |
|---|---|---|
| Ubuntu 22.04 / Debian | IronPDF | 預設設定-開箱即用 |
| Alpine Linux | IronPDF | 在 Dockerfile 中透過 APK 安裝 Chromium |
| Amazon Linux 2 | IronPDF |
使用LinuxAndDockerDependencies自動配置 = true
|
| Windows 容器 | IronPDF | 無需額外配置 |
一個基於 Ubuntu/Debian 的映像的最小多階段 Dockerfile:
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /app
COPY . .
RUN dotnet publish -c Release -o /out
FROM mcr.microsoft.com/dotnet/aspnet:8.0
# Install Chrome dependencies for PDF rendering
RUN apt-get update && apt-get install -y \
libglib2.0-0 libnss3 libatk1.0-0 libatk-bridge2.0-0 \
libcups2 libdrm2 libxkbcommon0 libxcomposite1 \
libxdamage1 libxrandr2 libgbm1 libpango-1.0-0 \
libcairo2 libasound2 libxshmfence1 && \
rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY --from=build /out .
ENTRYPOINT ["dotnet", "MyApp.dll"]
使用 IronPDF;
// Dependencies handled by Dockerfile apt-get — disable runtime install
IronPdf.Installation.LinuxAndDockerDependencies自動配置 = false;
// No GPU in containers
IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Dockerized PDF</h1>");
pdf.SaveAs("output.pdf");
使用 IronPDF;
// Dependencies handled by Dockerfile apt-get — disable runtime install
IronPdf.Installation.LinuxAndDockerDependencies自動配置 = false;
// No GPU in containers
IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Dockerized PDF</h1>");
pdf.SaveAs("output.pdf");
Imports IronPdf
' Dependencies handled by Dockerfile apt-get — disable runtime install
IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = False
' No GPU in containers
IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Dockerized PDF</h1>")
pdf.SaveAs("output.pdf")
RELATED GET-STARTED Guide: How to Use IronPDF with Docker
5. 將IronPDF與其他.NET PDF 庫進行比較
IronPDF 憑藉其強大的 Chromium 驅動的渲染引擎、直覺的 API 和頻繁的產品增強功能,成為許多團隊在 C# PDF 生成方面的首選解決方案。 讓我們將 IronPDF 與其他 PDF 轉換器進行比較,找到最適合您 PDF 產生需求的轉換器。
快速決策矩陣:IronPDF 與其他 .NET PDF 轉換器
| 解決方案 | 何時使用 | 最適合 |
|---|---|---|
| IronPDF。 | 將現代網站/HTML轉換為PDF,並保持精確的視覺保真度。 | 企業應用程式需要可靠的 HTML 渲染引擎、動態內容和專業支援。 |
| wkhtmltopdf譯文 | 在非關鍵應用程式中進行簡單的 HTML 轉換,可以接受過時的渲染效果。 | 使用傳統HTML/CSS產生基本文件。 |
| 融合 | 已投資 Syncfusion 生態系統或有資格獲得免費社區許可。 | 使用多個 Syncfusion 元件的組織。 |
| Aspose.PDF | 當HTML渲染品質要求不高時,就需要進行複雜的PDF操作。 | 除了HTML轉換功能外,還具備豐富的PDF編輯功能。 |
相關比較:
詳細比較:IronPDF 與其他 .NET PDF 轉換器
| 特點 | ★推薦IronPDF | wkhtmltopdf | iText 7 | Aspose.PDF | Syncfusion | Apryse | SelectPdf | Spire.PDF | PDFsharp | QuestPDF |
|---|---|---|---|---|---|---|---|---|---|---|
| Rendering & Conversion | ||||||||||
| 渲染精度 | 像素級完美 | 印刷風格 | 限程序化 | 好的 | 好的 | 好的 | 好的 | 低等級 | 無需渲染 | 程式碼優先佈局 |
| HTML5 支援 | 滿的 | 過時的 | 添加在 | 部分的 | 滿的 | 模組 | 滿的 | 有限的 | 不 | 否(代碼優先) |
| CSS3 支持 | 滿的 | 有限的 | 添加在 | 部分的 | 滿的 | 模組 | 滿的 | 有限的 | 不 | 否(代碼優先) |
| JavaScript 執行 | 最佳 | 不 | 不 | 爭議 | 有限的 | 有限的 | 有限的 | 非常有限 | 不 | 不 |
| HTML→PDF(現代佈局) | 嵌入式鉻最佳 | Qt WebKit(已過時) | 付費外掛 | 部分;JS 有爭議 | 閃爍引擎 | 需要模組 | 完整 HTML→PDF | 基於影像的 | 不 | 不是 HTML 渲染器 |
| PDF→影像渲染 | 是的 | 不 | 獨立模組 | 獨立產品 | 是的 | 是的 | 不 | 有限的 | 不 | 限自有文檔 |
| 文檔操作 | ||||||||||
| 透過程式設計方式產生 PDF | 是的 | 不 | 是的 | 是的 | 是的 | 是的 | 僅HTML | 是的 | 基本的 | 是的(Fluent API) |
| Merge, Split & Rearrange | 是的 | 不 | 是的 | 是的 | 是的 | 是的 | 是的 | 是的 | 有限的 | 是的 |
| 頁首/頁尾/頁碼 | HTML/文字/圖像最佳 | 限額 | 是 | 透過活動 | 透過活動 | 是 | 範本 | 手冊 | 限手動 | 頭等艙座位 |
| Watermarks & Stamping | 文字與圖像 | 不 | 是的 | 是的 | 是的 | 是的 | 是的 | 有限的 | 不 | 是的(疊加層) |
| 從 PDF 提取文字 | 是的 | 不 | 是的 | 是的 | 是的 | 是的 | 是的 | 是的 | 基本的 | 不 |
| 掃描PDF的OCR | 透過IronOCR集成 | 不 | 添加在 | 獨立產品 | 添加在 | 添加在 | 不 | 變通方法 | 不 | 不 |
| Security & Compliance | ||||||||||
| 數位簽名 | 是的 | 不 | 是的 | 是的 | 是的 | 範例程式碼 | 是的 | 不 | 不 | 未記錄 |
| PDF/A 合規性 | 是的(PDF/A-3B) | 不 | 完整版PDF/A | 驗證並創建 | 需要原生 SDK | PDF合規性 | 不 | 是的 | 有限的 | PDF/A-2x 和 3x |
| 平台 & Developer Experience | ||||||||||
| 跨平台 | Windows · Linux · macOS全部 3 | 取決於二進位文件 | .NET Standard 2.0 | Linux Extra Setup | Blink + .NET伺服器 | 原生 SDK | 僅限 Windows 系統 * | Linux 文件有限 | 以 Windows 為中心的 | Windows/Linux/macOS |
| Cloud & Docker Deploy | Azure · AWS · Docker最佳 | 複雜;遺產 | 多包 | 部分;容器 | 需要額外的 Blink 組件 | 本地部門 | 僅限 Windows | 資訊有限 | 簡單;輕便 | Docker/K8s;本地 |
| Support & 文件 | ||||||||||
| 文件 | 廣泛 + 複製/貼上最佳 | 部分 CLI 文檔 | 廣泛的;KB | 廣泛; GitHub | 幫助中心 | 跨語言目錄 | 入門指南 | 節目指南 | 社區指南 | 結構化 + 配套應用程式 |
| 開發者支援 | 全天候工程師最佳服務 | 僅限社區成員 | 包含訂閱 | 論壇 + 付費 | 24/5 直達軌道 | 商業的 | 電子郵件 | 論壇 + 電子郵件 | 僅限社區成員 | 社群 + GitHub |
| Licensing & Pricing | ||||||||||
| 授權模式 | 永久 | 開源 | AGPL / 訂閱 | 永久 | 年度訂閱 | 客製化/消費 | 永久 | 年度訂閱 | 免費(MIT) | 麻省理工學院免費/付費層級 |
| 起價 | 9永久授權 · 1 位開發者 | style="color:#16a34a">自由的 | 年均約 4.5 萬美元客製報價 | 每位開發商1,175 美元以上 | 訂閱費用995 美元/年· 100 萬美元以下免費 | 每年約 9000 美元以上的客製報價 | 499美元+永久 | 年度訂閱費999 美元/年 | style="color:#16a34a">自由的 | style="color:#16a34a">免費社區 MIT <100萬美元 |
| 免费试用 | 30天 · 所有功能無限制 | 不適用(免費) | 30天 | 是的(有浮水印) | Community <$1M Rev | 是 | 社區(5 頁) | 免費(10頁) | 不適用(免費) | N/A (MIT Free <$1M) |
| 定價透明度 | 已發布和清晰最佳 | 開源 | 複合AGPL | 多層 | 聯絡我們以取得報價 | 未公佈價格 | 已發布 | 已發布 | 麻省理工學院;無限制 | 麻省理工學院;基於信任 |
實際 HTML 轉 PDF 轉換比較:渲染 Reddit 首頁
為了評估輸出 PDF 的質量,我們使用 Reddit 的主頁對這些庫進行了測試,該主頁包含動態網頁內容、現代 CSS 和 JavaScript HTML 元素。 此頁面可作為產生輸出 PDF 的理想測試案例。

IronPDF。

IronPDF 能夠提供像素級的完美效果,保留所有動態網頁內容、現代網頁字體樣式和互動元素,使其與 Chrome 中的顯示效果完全一致,而這一切只需幾行程式碼即可實現。
融合

Syncfusion 渲染的 PDF 檔案缺少大部分章節和樣式,尤其是動態內容。 最初被Reddit的安全系統屏蔽。 要獲得更好的結果需要大量的命令列調整,但輸出仍然不完整。
Aspose.PDF譯本

Aspose.PDF 需要先手動下載 HTML 檔案(不支援直接下載 URL)。 轉換後的輸出格式不正確,幾乎缺少所有內容部分,因此不適合具有動態內容的現代網站。
wkhtmltopdf譯文

wkhtmltopdf 完成得很快,但產生的頁面是普通的靜態頁面,缺少即時更新、動態元素和互動部分等關鍵內容。 這說明 wkhtmltopdf 與現代的、基於 JavaScript 的網站不相容。
關於性能和輸出PDF品質的結論
對於需要可靠的 HTML 轉 PDF 轉換器的 .NET 開發人員來說,IronPDF 以最少的程式碼、易於使用的 API 和頻繁的產品增強功能脫穎而出。
在網路內容的實際測試中,它提供了最快、最準確的結果,而 Syncfusion 落後了,Aspose 需要額外的步驟,wkhtmltopdf 缺少現代樣式。 IronPDF 為現今的 HTML 轉 PDF 轉換工作流程提供了速度、準確性和簡易性的最佳平衡。
請注意: Aspose、SyncFusion 和 wkhtmltopdf 是其各自所有者的商標。 本網站與他們沒有任何關聯,也未獲得他們的認可。 所有名稱、標誌和品牌均屬於其所有者,比較基於撰寫時可公開取得的資訊。
概括
本指南涵蓋了在 .NET 中將 HTML 轉換為 PDF 所需的一切:從基本的字串轉換到非同步處理、數位簽章和批次產生等高級功能。 我們示範了三種轉換方法、基本配置、進階功能和安全性設置,並透過動態文件產生的實際測試,將 IronPDF 與其他庫進行了比較。
當競爭對手仍在為現代網站苦苦掙扎或需要複雜的變通方法時,IronPDF 憑藉最少的程式碼和強大的渲染引擎,提供了完美的效果。
準備好簡化您的 PDF 工作流程,並體驗只需幾行程式碼即可產生的多功能 PDF 了嗎? 透過 NuGet 套件管理器安裝 IronPDF(或在 Visual Studio 中選擇"管理 NuGet 套件"),立即將您的第一個 HTML 檔案轉換為 PDF 檔案。
立即開始您的 30 天免費試用,進行無浮水印的生產測試。 靈活的授權方案起價為 $799,透明的團隊定價方案可根據您的需求進行擴展。
6. 故障排除和技術支持
在將 HTML 轉換為 PDF 時遇到以下錯誤? IronPDF 透過https://ironpdf.com/上的聊天視窗提供 24/7 全天候工程師支援。
常見錯誤的快速解決方法
- 首次渲染速度慢? 普通的。 Chrome 初始化需要 2-3 秒,然後速度會加快。
- 雲端問題? 使用至少 Azure B1 或同等級的資源。
- 缺少資產? 設定基本路徑或嵌入為 base64 編碼。
- 缺少元素? 新增 RenderDelay 以延遲 JavaScript 執行。
- 渲染過程中的記憶體佔用? 更新至 v2025.9.4 以修正 HTML 轉 PDF、圖章和頁首/頁尾中的問題。
- 表單欄位問題(例如,文字區域過長、複選框等)? 已在 v2025.7.17 中修復; 確保複選框名稱唯一。 自訂頁首/頁尾裁切或特殊字元顯示錯誤? 已在 v2025.8.8 解決; 測試自動換行和元資料。
取得 IronPDF 工程師的協助,全天候 24/7 服務
下一步
常見問題解答
如何在C#中將HTML轉換為PDF?
您可以使用 C# 中的 Chrome 渲染庫將 HTML 轉換為 PDF,該程式庫可以將 HTML、CSS3 和 JavaScript 轉換為像素級精確的 PDF。 IronPDF 等工具可讓您從 URL、HTML 字串或檔案進行渲染,同時支援標頭、身份驗證和列印設定。
.NET 平台上最好的 HTML 轉 PDF 函式庫是什麼?
最佳程式庫應支援精確的Chrome渲染、跨平台部署和企業功能。IronPDF涵蓋了所有這些功能,運行於Windows、Linux、macOS和Docker,支援安全性、簽名、合規性和可擴展的.NET應用程式。
如何使用C#將HTML字符串轉換為PDF?
要將HTML字符串轉換為PDF,使用ChromePdfRenderer類及其RenderHtmlAsPdf方法。將您的HTML字符串傳遞給此方法,然後使用SaveAs保存PDF。
將網頁網址轉換為PDF文檔需要哪些步驟?
您可以使用RenderUrlAsPdf方法直接將網頁網址轉換為PDF,從而保留樣式、圖像和交互元素,如表單和超鏈接。
如何用 C# 將 HTML 檔案轉換為 PDF?
使用ChromePdfRenderer.RenderHtmlFileAsPdf("path/to/file.html")將本地HTML文件轉換為PDF。IronPDF會自動解析所有相對資產路徑(圖像、CSS、JS)。
如何將ASP.NET Razor Pages或MVC視圖轉換為PDF?
IronPDF提供專用的擴展包–IronPdf.Extensions.Razor用於Razor Pages和IronPdf.Extensions.Mvc.Core用於MVC視圖。使用RenderRazorToPdf或RenderRazorViewToPdf結合依賴注入,從您的控制器直接將視圖轉換為PDF。查看Razor指南 →
如何確保JavaScript內容在PDF中正確渲染?
通過設置RenderingOptions.EnableJavaScript = true啟用JavaScript渲染,並添加渲染延遲使用RenderingOptions.WaitFor.RenderDelay以確保在轉換之前動態內容已加載完成。查看WaitFor指南 →
在C#中將標題和頁腳添加到PDF的最佳方法是什麼?
使用TextHeaderFooter類來設置簡單的文字頁眉和頁腳,或者使用HtmlHeaderFooter類來設置更為複雜的HTML內容。您可以包含動態占位符例如{page}、{total-pages}和{date}來自動生成內容。查看頁眉和頁腳指南 →
如何管理C# .NET中PDF輸出中的分頁?
在您的PDF中通過在打印媒體類型的CSS塊內使用類似page-break-after: always和page-break-inside: avoid的CSS屬性來控制頁面分隔。查看頁面分隔指南 →
PDF中可用的紙張尺寸和方向設置選項有哪些?
使用RenderingOptions.PaperSize來設置紙張大小(選項包括A4、Letter、Legal等)和用RenderingOptions.PaperOrientation來設置方向為縱向或橫向。也支援毫米或英寸的自定義尺寸。查看紙張大小指南 →
我可以將經過身份驗證的網頁轉換為PDF嗎?
可以。IronPDF支援cookies、定制HTTP標頭和基於表單的身份驗證。通過ChromePdfRenderer.RenderingOptions.CustomCookies設置cookies,或者傳入auth標頭以進行token-based身份驗證。Windows NTLM和Kerberos身份驗證也得到支援。查看cookies指南 →
我可以從單個HTML模板創建多個PDF嗎?
是的,創建具有佔位符的HTML模板,然後使用字符串替換或模板庫如Handlebars.NET。在循環資料中替換佔位符為實際值,並使用RenderHtmlAsPdf生成PDF。
可以用密碼保護我生成的PDF嗎?
是的,您可以使用SecuritySettings屬性來設置用戶和所有者密碼、配置打印和複製等權限,並使用SecuritySettings.EncryptionAlgorithm應用AES256加密。查看加密指南 →
我可以從HTML生成PDF/A合規的文件嗎?
可以。IronPDF支援PDF/A-1b、PDF/A-2b、PDF/A-3b和PDF/UA標準來滿足存檔和無障礙合規性,大多數HTML到PDF的轉換器不提供。查看PDF/A指南 →
如何優化生成大量PDF的性能?
通過使用非阻塞操作的異步方法如RenderHtmlAsPdfAsync優化性能。重複使用ChromePdfRenderer實例,使用Task.WhenAll同時處理多個PDF,並確保您在64位系統上有足夠的服務器資源。查看異步指南 →
如何合併多個PDF或在文檔中包含封面?
使用靜態方法PdfDocument.Merge合併多個PDF。分別生成您的封面頁並將其與您的主文檔合併,以創建一個全面的PDF。查看合併指南 →
我可以在Azure、AWS或Docker上部署IronPDF嗎?
可以。IronPDF在Azure App Service、Azure Functions、AWS Lambda和Linux上的Docker容器上運行。每個平台都有專門的設置指南和Docker鏡像可用。查看Azure指南 → · 查看AWS指南 → · 查看Docker指南 →
.NET 10 兼容性:IronPDF 是否馬上支援 .NET 10?
是的——IronPDF與.NET 10完全兼容。根據IronPDF的發行說明,該程式庫在第一天就為.NET 10項目做好準備,不需要額外的配置。無論您使用的是web、控制台、桌面還是微服務應用程式,IronPDF都能與.NET 10 "開箱即用"。
IronPDF 是免費使用的嗎?
IronPDF提供一個功能齊全且沒有水印的30天免費試用。生產使用需要商業授權,最低售價為$749。提供Lite、Plus、Professional和Enterprise層級。查看定價 →
這個程式庫的渲染質量與像wkhtmltopdf這樣的其他選項相比如何?
此庫使用現代Chrome渲染引擎生成像素完美的PDF,不同於wkhtmltopdf的過時WebKit引擎。它不需要服務器可執行文件,支援完整的JavaScript/CSS3,定期更新並提供專業支援。
為什麼應該選擇此庫而非PDFSharp來進行HTML到PDF轉換?
PDFSharp缺乏內建的HTML到PDF轉換,需使用複雜的變通方法。該程式庫提供直接的HTML/URL/文件轉換,具有高級API,支援現代Web技術,並定期更新和提供專業支援。查看PDFSharp比較 →
將此作為HTML轉換的更好選擇的原因是什麼?
iTextSharp的免費版不支援本地HTML到PDF轉換,並具有複雜的低級API。此程式庫提供無縫的HTML轉換,具有直觀的API,全面支援CSS3/JavaScript,且無AGPL許可限制。查看iTextSharp比較 →
此庫的渲染質量與Aspose.PDF相比如何?
此程式庫生成像素完美的Chrome質量PDF,而Aspose.PDF常常無法正確顯示樣式和動態內容。Aspose需要手動下載HTML用於URL轉換,但此程式庫可直接轉換URL,且具有更優的精確度。查看Aspose比較 →
為什麼選擇此庫而不是Syncfusion PDF?
雖然Syncfusion很有能力,但此程式庫優化的Chrome引擎性能更快並且更有效地處理動態內容。它還提供了更簡單的API和額外功能,像是OCR和條碼生成。查看Syncfusion比較 →

