HTML 到 PDF:C# .NET 快速教程

使用 C# 將 HTML 轉換為 PDF - 完整的 .NET 開發人員指南

This article was translated from English: Does it need improvement?
Translated
View the article in English

歡迎觀看我們的教學課程,了解如何將 HTML 轉換為 PDF,以用於動態網頁內容、發票、報告或網頁存檔。 跟隨教程,使用最可靠的 C# HTML 轉 PDF 轉換器來產生與您的實際網頁設計相符的 PDF 文件。

TL;DR:HTML 轉 PDF 快速入門指南

您可以使用IronPDF庫輕鬆地在 C# 中將 HTML 轉換為 PDF,該庫提供了ChromePdfRenderer.RenderHtmlAsPdf方法,可以從 HTML、CSS 和 JavaScript 創建高品質的 PDF 文件。

Nuget Icon立即開始使用 NuGet 建立 PDF 檔案:

  1. 使用 NuGet 套件管理器安裝 IronPDF

    PM > Install-Package IronPdf

  2. 複製並運行這段程式碼。

    IronPdf.ChromePdfRenderer
           .StaticRenderHtmlAsPdf("<p>Hello World</p>")
           .SaveAs("pixelperfect.pdf");
  3. 部署到您的生產環境進行測試

    立即開始在您的專案中使用 IronPDF,免費試用!
    arrow pointer

購買或註冊 IronPDF 30 天試用版後,請尋找寄送至您信箱的許可證金鑰。 請在申請開始時新增您的許可證密鑰。

IronPdf.License.LicenseKey = "KEY";
IronPdf.License.LicenseKey = "KEY";
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

為什麼 .NET 開發人員需要 C# 的 HTML 轉 PDF 轉換器

.NET 框架缺乏內建的 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

你將學到什麼

1.如何使用 C# 將 HTML 轉換為 PDF 如何將 HTML 字串轉換為 PDF 如何將現有 URL 匯出為 PDF 如何從 HTML 文件產生 PDF 2.如何配置 HTML 轉 PDF 設定 3.如何使用進階 PDF 產生和安全功能 如何產生用於批次建立 PDF 的 HTML 模板 如何使用非同步方法產生 PDF 如何新增進階安全功能 4.將 IronPDF 與其他 .NET PDF 庫進行比較 快速決策矩陣:IronPDF 與其他 .NET PDF 轉換器 -詳細比較:IronPDF 與其他 .NET PDF 轉換器 -實際 HTML 轉 PDF 轉換比較:渲染 Reddit 首頁 -關於性能和輸出 PDF 品質的結論 5.故障排除和技術支持 快速修復常見錯誤 -全天候 (24/7) 取得 IronPDF 工程師的協助

1. 如何使用 C# 將 HTML 轉換為 PDF

無論您是處理 HTML 字串、URL 還是 HTML 文件,IronPDF 都提供靈活的選項來產生符合您特定要求的高品質 PDF 文件。

在本教程中,我們將帶您了解最常見的場景,包括 HTML 字串轉 PDF、URL 轉 PDF 和 HTML 檔案轉 PDF。 此外,IronPDF 還提供了多種用於操作 PDF 文件的功能:

多功能 PDF 轉換 動態網頁轉 PDF

如何將 HTML 字串轉換為 PDF

最基本的操作是將 HTML 字串轉換為 PDF。 這種方法非常適合動態產生的HTML內容。 當您直接將 HTML 轉換為 PDF 時,RenderHtmlAsPdf 方法完全支援 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");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

提示(已更新至 v2025.9.4) 最近的更新修復了 HTML 元資料中特殊字元/表情符號的問題,並確保更好地處理 html 表單字段,包括 Linux 上的中文字元。 使用以下方式測試動態內容請將 EnableJavaScript 設為 true 以獲得最佳效果。

當您的 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");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

[{t:(BaseUrlPath 告訴 IronPDF 在哪裡可以找到你的 CSS、JavaScript 和圖片檔案。 HTML 字串中的所有相對路徑都將從此目錄解析。

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
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

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
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

當網頁上的進階 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");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

響應式 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;
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

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
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

將 HTML 檔案及其資源(CSS、圖像)放在單獨的資料夾中,以便在將 HTML 檔案轉換為 PDF 之前在瀏覽器中進行編輯和測試。 這樣可以確保您的 HTML 程式碼完美渲染,從而產生高品質的 PDF 文件。

RELATED HOW-TO ARTICLE: Render HTML File to PDF

2. 如何配置 HTML 轉 PDF 設定

在處理 PDF 文件方面,IronPDF 透過ChromePdfRenderer.RenderingOptions屬性為渲染的 PDF 提供了廣泛的自訂選項。

Settings 描述 Example
PaperSize 設定現有PDF文件的頁面尺寸(A4、Letter、Legal等) PDF紙張尺寸.A4
紙張方向 將現有 PDF 設定為縱向或橫向。 PDF紙張方向.橫向
上邊距/下邊距/左邊距/右邊距 設定頁面邊距,單位為毫米(預設值:25毫米) 40
Css媒體類型 用於 HTML 轉 PDF 的螢幕或列印 CSS PdfCssMediaType.Print
PrintHtmlBackgrounds 包含背景顏色/圖像(預設值:true) true
啟用 JavaScript 在渲染 HTML 內容之前執行 JavaScript 程式碼 true
等待渲染延遲 動態 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");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

提示使用 PdfCssMediaType 可以在渲染的 PDF 檔案格式中獲得更清晰、更適合列印的佈局。 使用 Screen 來精確地搭配使用者在瀏覽器中看到的內容。

相關操作指南文章:

客製化 PDF 轉換 精緻 PDF 佈局

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>
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

對於需要產生 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");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

使用 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
SHELL
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");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

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>
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> htmlTemplates)
{
    var renderer = new ChromePdfRenderer();

    // Create parallel conversion tasks to generate PDF documents
    var tasks = htmlTemplates.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> htmlTemplates)
{
    var renderer = new ChromePdfRenderer();

    // Create parallel conversion tasks to generate PDF documents
    var tasks = htmlTemplates.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");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

@@--括號開啟--@@HTML 轉 PDF 效能最佳化技巧@@--括號關閉--@@

  • 使用 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");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

如何為 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");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

RELATED HOW-TO ARTICLE: Digitally Signing PDF Documents with C#

4. 將 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編輯功能。

請注意: PDFSharp 和iTextSharp等解決方案缺乏原生 HTML 轉 PDF 功能,因此未納入本次比較。 QuestPDF 需要採用程式碼優先的方法,不支援 HTML。 使用這些函式庫的開發者必須依賴第三方工具進行 HTML 渲染。

相關比較:

詳細比較:IronPDF 與其他 .NET PDF 轉換器

IronPDF wkhtmltopdf Syncfusion Aspose.PDF
渲染精度 像素級完美 印刷風格 Good Good
HTML5 支援 Full Outdated Full Full
CSS3 支持 Full Limited Full Full
JavaScript Full No Limited Limited
易用性 進階 API CLI Only Good Complex
伺服器安裝 None 執行檔 None None
表現 快速 + 非同步 Slow Fast Fast
Support 全天候工程師 Community 商業的 商業的
License 商業的 LGPLv3 商業版(訂閱) 商業的
Pricing $799+ View Licensing Free $900+ $1,175+

實際 HTML 轉 PDF 轉換比較:渲染 Reddit 首頁

為了評估輸出 PDF 的質量,我們使用 Reddit 的主頁對這些庫進行了測試,該主頁包含動態網頁內容、現代 CSS 和 JavaScript HTML 元素。 此頁面可作為產生輸出 PDF 的理想測試案例。

https://www.reddit.com/

這是Reddit首頁的截圖,展示了用於PDF轉換測試的動態內容、現代風格和互動元素。

IronPDF

IronPDF轉換結果完美呈現Reddit首頁,所有動態內容、樣式和互動元素都得以保留

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

融合

Syncfusion PDF 轉換顯示 Reddit 主頁部分渲染缺失,樣式不完整

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

Aspose.PDF

Aspose.PDF轉換嘗試顯示Reddit主頁內容捕獲極少,大部分頁面元素缺失

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

wkhtmltopdf

wkhtmltopdf 輸出顯示的是 Reddit 主頁的靜態、無樣式版本,不包含動態元素或現代 CSS。

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 ,透明的團隊定價可根據您的需求進行擴展。

查看 IronPDF 許可

5. 故障排除和技術支持

在將 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 服務

後續步驟

如何合併或拆分PDF文檔
請參閱操作指南
如何為 PDF 檔案新增自訂頁首和頁腳
請參閱操作指南
如何在PDF中編輯文字和區域
請參閱操作指南

常見問題解答

如何使用C#將HTML字符串轉換為PDF?

要將HTML字符串轉換為PDF,使用ChromePdfRenderer類及其RenderHtmlAsPdf方法。將您的HTML字符串傳遞給此方法,然後使用SaveAs保存PDF。

將網頁網址轉換為PDF文檔需要哪些步驟?

您可以使用RenderUrlAsPdf方法直接將網頁網址轉換為PDF,從而保留樣式、圖像和交互元素,如表單和超鏈接。

如何確保JavaScript內容在PDF中正確渲染?

通過設置RenderingOptions.EnableJavaScript = true啟用JavaScript渲染,並使用RenderingOptions.WaitFor.RenderDelay添加渲染延遲,以確保動態內容在轉換前完全加載。

在C#中將標題和頁腳添加到PDF的最佳方法是什麼?

對於簡單文本的標題和頁腳,使用TextHeaderFooter類,對於更復雜的HTML內容,使用HtmlHeaderFooter類。您可以包括動態佔位符,例如{page}{total-pages}{date},以實現自動內容生成。

我可以從單個HTML模板創建多個PDF嗎?

是的,創建具有佔位符的HTML模板,然後使用字符串替換或模板庫如Handlebars.NET。在循環數據中替換佔位符為實際值,並使用RenderHtmlAsPdf生成PDF。

可以用密碼保護我生成的PDF嗎?

是的,可以使用SecuritySettings屬性設置用戶和所有者密碼,配置打印和複製等權限,並使用SecuritySettings.EncryptionAlgorithm應用AES256加密。

如何優化生成大量PDF的性能?

通過使用像RenderHtmlAsPdfAsync這樣的異步方法來優化性能,以支持非阻塞操作。重用ChromePdfRenderer實例,使用Task.WhenAll並發處理多個PDF,並確保64位系統上有足夠的服務器資源。

如何管理C# .NET中PDF輸出中的分頁?

通過在打印媒體類型CSS塊中使用類似page-break-after: alwayspage-break-inside: avoid的CSS屬性來控制PDF中的分頁。

PDF中可用的紙張尺寸和方向設置選項有哪些?

使用RenderingOptions.PaperSize設置紙張尺寸(選項包括A4、Letter、Legal等),並使用RenderingOptions.PaperOrientation設置方向為縱向或橫向。還支持以毫米或英寸為單位的自定義尺寸。

如何合併多個PDF或在文檔中包含封面?

使用靜態PdfDocument.Merge方法合併多個PDF。單獨生成封面,並將其與主文檔合併,創建綜合PDF。

該庫的渲染質量如何與如wkhtmltopdf之類的選項相比?

此庫使用現代Chrome渲染引擎生成像素完美的PDF,不同於wkhtmltopdf的過時WebKit引擎。它不需要服務器可執行文件,支持完整的JavaScript/CSS3,定期更新並提供專業支持。

為什麼應該選擇此庫而非PDFSharp來進行HTML到PDF轉換?

PDFSharp缺少內置HTML到PDF轉換功能,需複雜解決方法。此庫提供直接的HTML/URL/文件轉換,擁有高級API,支持現代Web技術,並提供專業支持和定期更新。

與iTextSharp相比,此庫在HTML轉換方面有什麼優勢?

iTextSharp的免費版本不支持原生HTML到PDF轉換,API複雜低層次。此庫提供流暢的HTML轉換,API直觀,支持完整的CSS3/JavaScript,且無AGPL許可限制。

此庫的渲染質量與Aspose.PDF相比如何?

此庫生成像素完美的Chrome質量PDF,而Aspose.PDF經常忽略樣式和動態內容。Aspose需要手動HTML下載以進行URL轉換,但此庫直接轉換URL且精度更高。

為什麼選擇此庫而不是Syncfusion PDF?

雖然Syncfusion功能強大,但此庫的優化Chrome引擎執行速度更快且更有效地處理動態內容。它提供更簡單的API和OCR、條碼生成等附加功能。

.NET 10 兼容性:IronPDF 是否馬上支援 .NET 10?

是的 - IronPDF 與 .NET 10 完全相容。根據 IronPDF 發行紀錄,該函式庫在第一天就可以用於 .NET 10 專案,不需要任何額外的設定。無論您使用的是 Web、控制台、桌面或微服務應用程式,IronPDF 都可以「開箱即用」.NET 10。

Jacob Mellor, Team Iron 首席技术官
首席技术官

Jacob Mellor 是 Iron Software 的首席技術官,作為 C# PDF 技術的先鋒工程師。作為 Iron Software 核心代碼的原作者,他自開始以來塑造了公司產品架構,與 CEO Cameron Rimington 一起將其轉變為一家擁有超過 50 名員工的公司,為 NASA、特斯拉 和 全世界政府機構服務。

Jacob 持有曼徹斯特大學土木工程一級榮譽学士工程學位(BEng) (1998-2001)。他於 1999 年在倫敦開設了他的第一家軟件公司,並於 2005 年製作了他的首個 .NET 組件,專注於解決 Microsoft 生態系統內的複雜問題。

他的旗艦產品 IronPDF & Iron Suite .NET 庫在全球 NuGet 被安裝超過 3000 萬次,其基礎代碼繼續為世界各地的開發工具提供動力。擁有 25 年的商業經驗和 41 年的編碼專業知識,Jacob 仍專注於推動企業級 C#、Java 及 Python PDF 技術的創新,同時指導新一代技術領袖。

審核人
Jeff Fritz
Jeffrey T. Fritz
首席程序经理 - .NET 社区团队
Jeff 也是 .NET 和 Visual Studio 团队的首席程序经理。他是 .NET Conf 虚拟会议系列的执行制作人,并主持“Fritz 和朋友”这一每周两次的开发者的直播节目,在节目上讨论技术并与观众一起编写代码。Jeff 撰写研讨会、主持演讲,并计划大型 Microsoft 开发者活动(包括 Microsoft Build、Microsoft Ignite、.NET Conf 和 Microsoft MVP Summit)的内容。
評論
用戶圈
csharpBuilderX says:
快速回覆且準確的幫助。支持體驗一流!
用戶圈
Daniel N. says:
處理一切非常迅速。沒想到會這麼順利。
用戶圈
Leila G. says:
耐心且清晰地指導我解決問題。頂級支持。
用戶圈
johnny_dev87 says:
支持人員友好,樂於助人,並且在問題解決之前一直陪伴我。幹得好!
用戶圈
Theo B. says:
快速響應,秒懂問題。感謝這種毫不費力的解決方案。
用戶圈
megan.codes says:
優秀的客戶體驗。感覺有人真正傾聽並提供了幫助。
用戶圈
Matt Mariano says:
過程非常簡單。非常感謝
用戶圈
Ajay V. says:
感謝快速幫助和順暢的交流。我毫不拖延地得到了所需的東西。
用戶圈
Matt Mariano says:
過程非常簡單。非常感謝
用戶圈
Santosh Ramareddy says:
理解並能夠輕鬆指導我
用戶圈
Rob Davis says:
立即幫助我解決了問題,並等我測試。對接收到的服務非常滿意
用戶圈
harry_devtools says:
支持團隊確切知道該做什麼。快速、高效,並且在整個過程中都很禮貌。
用戶圈
Chris Derham says:
解決問題無痛苦。幹得好。你應該給你的支持團隊加薪!
用戶圈
Varonique Philander says:
我能夠獲得所需的信息。感謝你。
用戶圈
Jan Dolezalek says:
快速的支持響應。問題立即得到解決。
用戶圈
Henrik Melchander says:
快速而清楚
用戶圈
Aayush Raj says:
傑作
用戶圈
Doug Charbonneau says:
支持人員需要花費一些時間來與我一起解決問題。本來快要放棄了,可能挽救了一筆交易!!!
用戶圈
Rod Rencoret says:
出色的支持,優秀的服務。謝謝你。
用戶圈
Beugin says:
簡單而高效。
用戶圈
William Mayerchak says:
好文,好響應時間。
用戶圈
Abby Fields says:
說實話,不錯。解釋很清楚,我喜歡可以直接複製和粘貼範例。並非每個文檔都能做到這一點。有個建議:加一節關於與Razor視圖集成的內容。
用戶圈
Leo Fernandez says:
我在尋找一種將動態HTML模板轉換為PDF而不影響CSS樣式的方法,這篇教程做到了。我需要的一切都在那裡。即使是許可部分也幫助我澄清了一些困惑。
用戶圈
iAmNick_C says:
直接了當,我很欣賞這一點。PDF也很清晰。
用戶圈
user12345 says:
PDF現在終於在正確的邊距內打印了。謝謝!
用戶圈
Oscar Vega says:
如果您使用.NET並希望在不心力交瘁的情況下將HTML轉換為PDF,這篇指南是個好選擇。集成簡單,沒有奇怪的依賴。只需添加包並開始使用。
用戶圈
skywalker.dev says:
在咖啡涼下來之前我就開始了。這說明了一些問題!
用戶圈
Vanessa Li says:
教程非常詳盡。我特別欣賞對渲染樣式和字體的細節關注。我們在一個相當大的企業級應用中使用了IronPDF,至今還沒有讓我們失望。
用戶圈
theRealCSharpNerd says:
穩妥的指南。IronPDF的學習曲線有點怪,但是這樣讓我更容易理解。
用戶圈
Nadia Hassan says:
不錯的資源。可以更多地涵蓋邊緣情況,但對大多數開發者來說是一個強大的起點。
用戶圈
Tina Q. says:
還可以。我期待更高級的用例,比如動態添加書籤或目錄。但總的來說,這讓我入門了。
用戶圈
Priya Chatterjee says:
我喜歡這不會假設太多。它對初學者很友好,不過對於像我這樣只想確認最佳實踐的開發者來說仍然很有用。做得好。
用戶圈
dev_mike89 says:
運行得非常好!在10分鐘內搞定!
用戶圈
Harvey Becker says:
用於內部報告儀表板項目,效果很好,開箱即用。希望看到一些長時間渲染任務的異步處理示例。
用戶圈
lucy_d_coder says:
簡潔而且簡單。我喜歡這樣。
用戶圈
Jacob.Stone says:
真希望我更早發現這個。為我省了大量的試錯時間。
用戶圈
Benito Reyes says:
可以有更多的Razor Pages示例。不過,教程給出了所有正確的拼圖。
用戶圈
xXJoelXx says:
只有兩個字:救星。
用戶圈
Laura Meyers says:
我已經使用IronPDF好幾年了。每次回顧文檔,它們都有更新。這份HTML到PDF教程也不例外——組織得很好,非常符合開發者的需求。
用戶圈
CodeWithMarla says:
我是老派開發者,IronPDF還不錯。這份教程的內容足夠,不用每五分鐘就查一次谷歌。
用戶圈
Matt R. says:
這份指南對我從另一個PDF引擎遷移時很有幫助。嵌入CSS的樣式支持部分是金子。
留下評論
準備好開始了嗎?
Nuget 下載 16,493,056 | Version: 2025.11 剛發表