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

如何在C#中將HTML轉換為PDF(開發者指南)

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

在C#中將HTML轉換為PDF看似簡單,但在實際專案中會遇到渲染、部署和縮放限制。 本指南展示了如何可靠地使用IronPDF的Chrome引擎進行轉換,從可以在一分鐘內運行的工作程式碼開始。

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

您可以輕鬆地使用IronPDF程式庫將HTML轉換為PDF,其提供了ChromePdfRenderer.RenderHtmlAsPdf方法,可從HTML、CSS和JavaScript建立高質量的PDF文件。

  1. 使用NuGet套件管理器安裝https://www.nuget.org/packages/IronPdf

    PM > Install-Package IronPdf
  2. 複製並運行這段程式碼片段。

    new IronPdf.ChromePdfRenderer()
        .RenderHtmlAsPdf("<p>Hello World</p>")
        .SaveAs("pixelperfect.pdf");
  3. 部署以在您的實時環境中測試

    今天就開始在您的專案中使用IronPDF,透過免費試用

    arrow pointer

購買或註冊30天試用IronPDF後,請查找發送到您電子郵件中的授權金鑰。 在應用程式開始時新增您的授權金鑰。

IronPdf.License.LicenseKey = "KEY";
IronPdf.License.LicenseKey = "KEY";
Imports IronPdf

IronPdf.License.LicenseKey = "KEY"
$vbLabelText   $csharpLabel

本指南中的所有程式碼均在IronPDF v2026.6.1 · .NET 10 · 2026年6月上進行了驗證。

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

IronPDF利用嵌入的Google Chromium渲染引擎確保高保真轉換,準確保留您的網頁內容的佈局和樣式。

強大的Chrome渲染引擎:使用Chrome的Blink引擎進行精確的HTML到PDF轉換。

像素精確:生成的PDF文件完全與網頁一致,而不是適合列印的版本。

全面的現代網頁支持:完全支持CSS3、HTML5和JavaScript的所有HTML元素。

性能提升5到20倍:比瀏覽器自動化或網頁驅動程式快得多。

PDF/UA合規:生成符合508條款標準的無障礙PDF。

無外部依賴:不需要在伺服器上安裝可執行文件。

✅ Designed for C#, F#, and VB.NET on .NET 10, 9, 8, 7, 6, Core, Standard, and Framework.

請注意v2026.6.1(2026年6月)的最新內容:在渲染過程中將HTML標題自動生成PDF書籤,針對雲端和沙盒環境的完全記憶體中PDF線性化,帶有簽署者證書檢查的ECDSA數位簽名、可點擊的連結註釋以及更輕量且增強的Linux和Docker映像。 查看完整的變更日誌以了解完整的發佈歷史。)]}

IronPDF簡化了.NET開發人員的過程,提供了一個簡單而高效的解決方案,從您的網頁應用程式的HTML生成專業外觀的PDF文件。 從發票和報告到證書和檔案,開發者可以使用他們熟悉的網頁技術棧,而IronPDF僅需幾行程式碼就能處理複雜的內容。

相關: IronPDF變更日誌:更新、里程碑、路線圖

您將學到的內容

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

  2. 如何配置HTML到PDF的設置

  3. 如何使用高級PDF生成和安全功能

  4. 如何在雲端平台上部署HTML到PDF

  5. 比較IronPDF與其他 .NET PDF 程式庫

  6. 故障排除和技術支援

根據用例選擇您的HTML到PDF路徑

不確定從哪裡開始? 直接跳轉到符合您建設的路徑:

您正在建設的內容 從這裡開始
轉換單次HTML字串 HTML String to PDF
存檔即時URL或網頁 URL to PDF
構建Razor頁面或MVC應用 Razor / MVC to PDF
批量或高容量伺服器端生成 非同步和批量生成

1. How to Convert HTML to PDF C

無論您正在處理HTML字串、URL或HTML文件,IronPDF都提供靈活的選項來生成滿足您的特定需求的高質量PDF文件。

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

如何將HTML字串轉換為PDF

最基礎的操作是將HTML字串轉換為PDF。 此方法非常適合動態生成的HTML內容。 RenderHtmlAsPdf方法在直接將HTML轉換為PDF時完全支援HTML5、CSS3、JavaScript和圖像。

using 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");
using 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")
$vbLabelText   $csharpLabel

已在IronPDF v2026.6.1 · .NET 10 · 2026年6月上對此進行驗證。

輸出

運行上面的程式碼段,IronPDF返回一頁PDF,正好包含您所傳遞的標題,是最簡單的渲染方式:

性能

IronPDF從字串、URL和HTML轉換為PDF的性能是使用具有16GB RAM的聯想筆記本電腦測量的。 測試文件是一份3頁的企業發票,包含標準的CSS網格、漸變和多部分表格。

結果如下:

測量指標 數值
平均渲染時間 約486毫秒
每次渲染的記憶體 約3.6 MB

在16核工作站(Windows 11,.NET 8)上連續進行了5次測量。 第一次呼叫還包括一次性Chromium引擎初始化(約1.3秒時間)

第一次我運行測試時,渲染時間很慢(每次呼叫超過一秒!)。 查看發生了什麼之後,我意識到我有多個打開的Chromium實例在運行,而且是電池供電,這都不允許程式庫展示其真正的速度。 等我關閉競爭進程並插電後,效果顯著提升:溫暖運行的平均時間約為486毫秒,最快則接近473毫秒。

提示最近更新解決了HTML元数据中特殊字元/表情符號的問題,並確保更好地處理HTML表單字段,包括Linux上的中文字元。 使用<spanEnableJavaScript = true測試動態內容以獲得最佳效果。

當您的HTML字串引用本地資源مثل圖像或樣式表時,Use baseUrlOrPath參數適當轉換帶有所有資源的HTML內容:

:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-2.cs
using 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")
$vbLabelText   $csharpLabel

提示baseUrlOrPath告訴IronPDF在哪裡尋找您的CSS、JavaScript和圖像文件。 您HTML字串中的所有相對路徑都將在此目錄中解析。

警告要注意的一個問題是,無論您使用哪類庫進行自動化文件生成,測試輸出還是非常重要,企業文件可能會在系統設置返回為預設時斷裂或缺失資源。 IronPDF提供了baseUrlOrPath參數,將相對路徑指向正確目錄,因為快速檢查輸出通常是批量運行前捕獲問題所必需的。

相關操作文章: 如何在C#中將HTML字串轉換為PDF

如何將現有URL匯出為PDF

使用C#將整個網頁呈現為PDF允許團隊分離PDF設計和後端渲染工作。 此方法允許您將任何指定的URL直接轉換為PDF格式。

核心方法是RenderUrlAsPdf,它獲取一個活動頁面並以單次呼叫進行渲染:

using IronPdf;

// Create a PDF from any existing web page
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/PDF");
pdf.SaveAs("wikipedia.pdf");
using IronPdf;

// Create a PDF from any existing web page
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/PDF");
pdf.SaveAs("wikipedia.pdf");
Imports IronPdf

' Create a PDF from any existing web page
Private renderer = New ChromePdfRenderer()
Private pdf = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/PDF")
pdf.SaveAs("wikipedia.pdf")
$vbLabelText   $csharpLabel

輸出

此處RenderUrlAsPdf將維基百科條目捕捉為靜態、適合列印的PDF,其中文字、圖像、表格及佈局保留在33頁樹立:

列印對比螢幕CSS

您可以配置IronPDF使用任一CSS媒體型別進行渲染。

:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-4.cs
using 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
$vbLabelText   $csharpLabel

JavaScript支持

IronPDF完全支持JavaScript、jQuery乃至AJAX,當您將HTML轉換為PDF時。 對於動態HTML内容,您可以配置IronPDF在渲染網頁為PDF之前等待JavaScript完成。 這很適合單頁應用和動態網站。

:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-5.cs
using 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
$vbLabelText   $csharpLabel

當將智能化d3.js弦圖從網頁渲染到PDF格式時,JavaScript執行同樣可顯示:

:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-6.cs
using IronPdf;

// Create renderer for JavaScript-heavy HTML
var renderer = new ChromePdfRenderer();

// Convert d3.js visualization web page to PDF
var pdf = renderer.RenderUrlAsPdf("https://observablehq.com/@d3/chord-diagram");

// 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://observablehq.com/@d3/chord-diagram")

' Save the interactive chart as static PDF
pdf.SaveAs("chart.pdf")
$vbLabelText   $csharpLabel

已在IronPDF v2026.6.1 · .NET 10 · 2026年6月上對此進行驗證。

響應式CSS

由於響應式網頁是設計成在瀏覽器中查看的,而IronPDF在伺服器操作系統中不打開真正的瀏覽器窗口,因此響應式HTML元素可能渲染在其最小的大小。建議PdfCssMediaType.Print在渲染整個網頁時解決此問題。

:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-7.cs
// Configure for optimal responsive design handling in HTML to PDF
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
$vbLabelText   $csharpLabel

相關操作文章: 如何將URL渲染為PDF

如何將HTML文件轉換為PDF

將本地HTML文件轉換為PDF保留了包括CSS、圖像和JavaScript的一切相對資源,如同使用 file:// 協議打開。 此HTML到PDF的方法最適合將模板或預設設計的HTML頁面轉換為PDF文件。

:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-8.cs
using 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
$vbLabelText   $csharpLabel

已在IronPDF v2026.6.1 · .NET 10 · 2026年6月上對此進行驗證。

輸出

RenderHtmlFileAsPdf指向HTML發票模板,文件的完整設計(標誌、線項目表、總計)無需額外代通過作即可取得像素精確:

性能

保持所有因素不變再次測量性能以渲染來自磁碟的同樣3頁企業發票:

測量指標 數值
平均渲染時間 約502毫秒
每次渲染的記憶體 約3.1 MB

*在相同16核工作站上連續進行了5次測量(Windows 11,.NET 8)。 基於記憶體的字串渲染與基於文件的渲染相匹配,在3%左右; 從磁碟讀取HTML不新增可測量的開銷。

提示將您的HTML文件與其資產(CSS、圖片)分開保存到一個文件夾中,以便在將HTML文件轉換為PDF之前在瀏覽器中進行編輯和測試。 這確保能够完美渲染您的HTML,以生成高質量的PDF文件。

相關操作文章: 將HTML文件渲染為PDF

如何將Razor頁面轉換為PDF

如果您的ASP.NET Core專案已使用Razor頁面,您可以不重構您的HTML而直接將它們轉換為PDF。 IronPDF的Razor擴展增加了RenderRazorToPdf方法,該方法將您的.cshtml頁面(包含其模型和佈局)轉換為PDF文件,並以單次呼叫來進行渲染。

Install-套件 IronPdf.Extensions.Razor
using IronPdf;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;

public class ReportModel : PageModel
{
    public IActionResult OnGet()
    {
        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");
    }
}
using IronPdf;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;

public class ReportModel : PageModel
{
    public IActionResult OnGet()
    {
        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
Imports Microsoft.AspNetCore.Mvc
Imports Microsoft.AspNetCore.Mvc.RazorPages

Public Class ReportModel
    Inherits PageModel

    Public Function OnGet() As IActionResult
        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")
    End Function
End Class
$vbLabelText   $csharpLabel

請注意RenderRazorToPdf需要一個ASP.NET Core Web App專案。 它不能在控制台應用程式或類庫中工作; Razor視圖引擎必須在托管管線中可用。

相關操作文章: 如何在Razor頁面中將CSHTML轉換為PDF

如何將MVC視圖轉換為PDF

使用MVC模式的團隊可以直接從其現有的視圖和控制器生成PDF。 安裝MVC Core擴展包,然後使用您的視圖路徑和模型調用RenderRazorViewToPdf; IronPDF處理Razor渲染管線並輸出完成的PDF。

這對於報告、發票以及任何在瀏覽器中已經設計和測試的頁面特別有用。 生成的PDF保存了完整的視圖輸出,包括佈局頁面和局部視圖。

Install-套件 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)()
$vbLabelText   $csharpLabel

然後在您的控制器動作中,大宗運送員並範按旅行

using IronPdf;
using IronPdf.Extensions.Mvc.Core;
using Microsoft.AspNetCore.Mvc;

public class ReportController : Controller
{
    private readonly IRazorViewRenderer _viewRenderService;

    // Inject the view renderer via constructor
    public ReportController(IRazorViewRenderer viewRenderService)
    {
        _viewRenderService = viewRenderService;
    }

    public IActionResult Download()
    {
        var reportModel = new { Title = "Quarterly Report", Total = 1250.00 };
        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");
    }
}
using IronPdf;
using IronPdf.Extensions.Mvc.Core;
using Microsoft.AspNetCore.Mvc;

public class ReportController : Controller
{
    private readonly IRazorViewRenderer _viewRenderService;

    // Inject the view renderer via constructor
    public ReportController(IRazorViewRenderer viewRenderService)
    {
        _viewRenderService = viewRenderService;
    }

    public IActionResult Download()
    {
        var reportModel = new { Title = "Quarterly Report", Total = 1250.00 };
        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
Imports Microsoft.AspNetCore.Mvc

Public Class ReportController
    Inherits Controller

    Private ReadOnly _viewRenderService As IRazorViewRenderer

    ' Inject the view renderer via constructor
    Public Sub New(viewRenderService As IRazorViewRenderer)
        _viewRenderService = viewRenderService
    End Sub

    Public Function Download() As IActionResult
        Dim reportModel = New With {.Title = "Quarterly Report", .Total = 1250.0}
        Dim renderer = 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")
    End Function
End Class
$vbLabelText   $csharpLabel

相關操作文章: 如何在ASP.NET Core MVC中將視圖轉換為PDF

2. 如何配置HTML到PDF設定

就操作PDF文件而言,IronPDF通過實裁可能ChromePdfRenderer.RenderingOptions對於渲染的PDF提供廣泛的自定義功能。

設定 描述 範例
紙張大小 設置現有 PDF 的頁面尺寸(A4、信函、法律格式等等) PdfPaperSize.A4
頁面方向 設置現有PDF的縱向或橫向 PdfPaperOrientation.Landscape
/// 以毫米設定頁面邊距(預設:25毫米) 25
Css媒體型別 用于HTML轉換為PDF的螢幕或列印CSS PdfCssMediaType.Print
列印HTML背景 包括背景色/圖片(預設:true) true
EnableJavaScript 在渲染HTML內容之前執行JavaScript true
WaitFor.RenderDelay 動態HTML內容的等待時間(毫秒) 500

請參考以下程式碼段以獲取操作PDF文件的完整配置範例:

using 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");
using 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 As PdfDocument = renderer.RenderHtmlAsPdf(htmlContent)
pdfDocument.SaveAs("styled-output.pdf")
$vbLabelText   $csharpLabel

提示使用PdfCssMediaType以獲得更為清晰、優化列印的佈局,作為渲染的PDF文件格式。 使用螢幕來完全對齊用户瀏覽器中查看的。

相關操作文章:

如何設置自定義HTTP標頭、Cookies和登錄憑證

當渲染需要身份驗證或特定請求元資料的URL時,IronPDF允許您將登錄憑証、會話cookie和HTTP頭部包含在請求中。這樣便能將公司內部儀表板、受限制報告或通過API生成的頁面直接渲染爲PDF,無需單獨獲取HTML。

對於基本或NTLM驗證,請在渲染器上設置LoginCredentials物件。 對於基於令牌或基於會話的存取,透過RenderUrlAsPdf

using 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.com/pany.com/quarterly-report");
pdf.SaveAs("quarterly-report.pdf");
using 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.com/pany.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.com/pany.com/quarterly-report")
pdf.SaveAs("quarterly-report.pdf")
$vbLabelText   $csharpLabel

相關操作文章: 在登錄認證後渲染PDF |自定義HTTP請求標頭

如何以代理進行PDF渲染配置

當渲染HTML載入在公司代理後面的外部資源時,以RenderHtmlAsPdf()參數將代理地址傳遞。 這是一個方法參數,而非ChromePdfRenderOptions上的一個屬性,因此這是在每次渲染呼叫時設置,而非對於渲染器實例的設置。

對於認證代理,將憑证直接嵌入URL中使用http://user:pass@host:port格式。 在內,中對密碼中的特殊字元進行URL編碼,使用Uri.EscapeDataString()

using IronPdf;

var renderer = new ChromePdfRenderer();

// Proxy is the third parameter, not a render option
var pdf = renderer.RenderHtmlAsPdf(
    "<h1>Report</h1><link rel='stylesheet' href='https://cdn.example.com/styles.css'>",
    baseUrlOrPath: null,
    proxy: "http://proxy.co/rp.local:8080"
);
pdf.SaveAs("proxied-report.pdf");
using IronPdf;

var renderer = new ChromePdfRenderer();

// Proxy is the third parameter, not a render option
var pdf = renderer.RenderHtmlAsPdf(
    "<h1>Report</h1><link rel='stylesheet' href='https://cdn.example.com/styles.css'>",
    baseUrlOrPath: null,
    proxy: "http://proxy.co/rp.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 = renderer.RenderHtmlAsPdf(
    "<h1>Report</h1><link rel='stylesheet' href='https://cdn.example.com/styles.css'>",
    baseUrlOrPath:=Nothing,
    proxy:="http://proxy.co/rp.local:8080"
)
pdf.SaveAs("proxied-report.pdf")
$vbLabelText   $csharpLabel

注意RenderUrlAsPdf()不接受代理參數。 要在代理後渲染活動URL,調用配置RenderHtmlAsPdf()設置代理參數以供資源載入。

相關操作文章: 如何為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>
' 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>
$vbLabelText   $csharpLabel

對於需要生成PDF文件的較长模板,請在HTML內容中使用占位符替換:

:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-16.cs
using 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");
}
Imports IronPdf

' 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
$vbLabelText   $csharpLabel

使用Handlebars.NET進行HTML到PDF模板化

對於在將HTML轉換為PDF時具有迴圈和條件邏輯的復雜模板,利用Handlebars.NET進行高級模板化來生成包含動態HTML內容的PDF文件。

# First, install Handlebars.NET for HTML to PDF templating
PM > Install-套件 Handlebars.NET
# First, install Handlebars.NET for HTML to PDF templating
PM > Install-套件 Handlebars.NET
SHELL
:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-21.cs
using HandlebarsDotNet;
using 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")
$vbLabelText   $csharpLabel

相關操作文章: 在GitHub上了解有關Handlebars.NET的更多資訊

控樂排行榜

生成的篇章-管理PDF確保專業閱讀的佈局當你貝HTML片段。運用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文件的需求提供全面的非同步執行和多執行緒支援

using IronPdf;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

public class PdfGenerationService
{
    // 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");
        }
    }
}
using IronPdf;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

public class PdfGenerationService
{
    // 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.Collections.Generic
Imports System.Linq
Imports System.Threading.Tasks

Public Class PdfGenerationService
    ' 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
End Class
$vbLabelText   $csharpLabel

已在IronPDF v2026.6.1 · .NET 10 · 2026年6月上對此進行驗證。

提示HTML到PDF轉換的性能優化提示

  • 使用64位系統,PDF生成性能最佳。
  • 確保足夠的伺服器資源可用於生成PDF文件(避免使用能力不足的免費等級)
  • 複雜JavaScript於HTML內容中給與適足RenderDelay。
  • 盡可能重用ChromePdfRenderer實例。
  • 針對批量/非同步操作利用最近的内存修補以減少資源使用。 ;測試重複的頁眉/頁腳中的小文件大小減少。

相關操作文章: 如何使用非同步與多執行緒生成PDF

如何新增進階安全功能

如何為.NET中的PDF文件新增密碼保護

在將HTML內容轉換為受保護的PDF格式時,使用密碼和權限來保護敏感生成的PDF和詞案發送的文件

:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-24.cs
using 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 = PdfPrintSecurity.PrintLowQuality;

// 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 = PdfPrintSecurity.PrintLowQuality

' Apply strong encryption to PDF documents
pdf.SecuritySettings.EncryptionAlgorithm = PdfEncryptionAlgorithm.AES256
pdf.SaveAs("secure-document.pdf")
$vbLabelText   $csharpLabel

如何為PDF文件新增數位簽章

新增密碼符號以確保證書文件真實性,當您從的HTML內容生成PDF文件。 簽署後,您可以進行驗證署數位簽章,並閱讀簽署者的證書進行審計與合(G合並查覈)。

:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-25.cs
using 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"
};

// 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"
}

' Apply signature to PDF documents
pdf.Sign(signature)
pdf.SaveAs("signed-contract.pdf")
$vbLabelText   $csharpLabel

已在IronPDF v2026.6.1 · .NET 10 · 2026年6月上對此進行驗證。

相關操作文章: 如何數字簽署PDF文件

如何將HTML表單轉換為可填寫的PDF

要將標準HTML表單元素轉換為互動性、可填寫的PDF表單字段,啟用CreatePdfFormsFromHtml渲染選項。 這可以作為生成的PDF文件中的可編輯欄位保存文字輸入、核取框、單選按鈕以及下拉選單。

:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-26.cs
using 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 = 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")
$vbLabelText   $csharpLabel

警告您的 HTML 中的每個表單字段必須有唯一的name屬性。] 重複的名稱會導致在生成的PDF中共享相同的值,當使用者填寫表單時會出現意外行為。)]

相關操作說明文章: 如何在C#中建立可填寫的PDF表單

如何將特定HTML元素轉換為PDF

要渲染頁面中的特定部分而不是整個文件,需在渲染之前隔離目標元素。 最直接的方法是使用WaitFor.HtmlQuerySelector()確保元素在提取前存在。 以下程式碼片段保留document.head,以便樣式表和字體可以繼續使用; 如果不執行該步驟,依賴於父選擇器的CSS規則將在提取的PDF中丟失。

對於可存取原始HTML的伺服器端場景,使用如AngleSharp的解析器提取目標片段並將其傳遞給RenderHtmlAsPdf(),無需執行JavaScript。

:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-27.cs
using IronPdf;

// Full page HTML containing the target element
string fullPageHtml = @"
<html>
<body>
    <header><h1>Acme Corp Invoice</h1></header>
    <div id='invoice-summary'>
        <h2>Invoice #12345</h2>
        <p>Total: $1,250.00</p>
    </div>
    <footer>Confidential</footer>
</body>
</html>";

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

' Full page HTML containing the target element
Dim fullPageHtml As String = "
<html>
<body>
    <header><h1>Acme Corp Invoice</h1></header>
    <div id='invoice-summary'>
        <h2>Invoice #12345</h2>
        <p>Total: $1,250.00</p>
    </div>
    <footer>Confidential</footer>
</body>
</html>"

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")
$vbLabelText   $csharpLabel

相關操作說明文章: 如何將HTML元素和部分頁面轉換為PDF

如何將已驗證的頁面渲染為PDF

有三種方法可以渲染需要身份驗證的頁面:網路登錄憑證,自定義Cookie和HTTP請求頭。 這些涵蓋了將受保護的網頁內容轉換為PDF時的最常見身份驗證場景。

登錄憑證

在將受保護的URL轉換為PDF時,對於基本、摘要或NTLM身份驗證,使用ChromeHttpLoginCredentials

:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-28.cs
using 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")
$vbLabelText   $csharpLabel

Cookies和HTTP請求頭

對於基於令牌或會話的身份驗證,請將自定義的Cookie和HTTP請求頭直接附加到渲染請求中。

:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-29.cs
using 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.HttpRequestHeaders["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.HttpRequestHeaders("Authorization") = "Bearer eyJhbGciOi..."

Dim pdf = renderer.RenderUrlAsPdf("https://app.example.com/dashboard")
pdf.SaveAs("dashboard.pdf")
$vbLabelText   $csharpLabel

CustomCookies字典以渲染受保護的頁面。

相關操作說明文章: 如何將作為身分驗證後的HTML轉換為PDF

Icon Quote related to 如何將已驗證的頁面渲染為PDF

我最喜歡的程式庫是IronPDF。它允許快速高效地操作PDF文件。它還有許多有價值的功能,例如導出到PDF/A格式和數位簽署PDF文件。

Milan Jovanovic related to 如何將已驗證的頁面渲染為PDF

Milan Jovanovic

Microsoft MVP

查看案例研究
Icon Quote related to 如何將已驗證的頁面渲染為PDF

IronOCR意味著我們每年可以從手動處理中節省$40,000,同時提高生產力,釋放資源以進行高影響的任務。我會強烈推薦它。

Brent Matzelle related to 如何將已驗證的頁面渲染為PDF

Brent Matzelle

首席技術官,OPYN

查看案例研究
Icon Quote related to 如何將已驗證的頁面渲染為PDF

IronSuite在我們的運營中扮演著至關重要的角色。這些工具增加了包括建立平面圖和改善庫存管理在內的業務效率。

David Jones related to 如何將已驗證的頁面渲染為PDF

David Jones

首席軟體工程師,Agorus Build

查看案例研究

4. 如何在雲平台上部署HTML到PDF

在雲環境中部署HTML到PDF轉換需要對無頭渲染,臨時文件路徑及資源分配進行特定配置。 這部分涵蓋了最常見的雲平台和IronPDF的容器化部署。

平台 最低資源 套件 AutoConfig 臨時路徑 關鍵注意事項
Azure App Service B1階層(基本) IronPdf.Linux true /tmp 免費/共享層失敗(無GPU,記憶體低)
Azure Functions (Windows) B1階層 IronPdf true /tmp 取消勾選"從包文件運行"
AWS Lambda 512 MB / 60s 超時 IronPdf.Linux true /tmp(必需) 預設文件系統為只讀
Docker (Ubuntu/Debian) 視影像而定 IronPdf.Linux false 影像預設 設置false(Dockerfile處理依賴)

如何在Azure上部署

在部署到Azure Functions或App Service時,禁用GPU加速並確保您的托管層提供足夠的記憶體來進行基於Chrome的渲染。 在任何渲染調用之前,在應用程式啟動時新增這些設置。

Azure沙盒以無頭運行,無GPU存取,且免費/共享層(F1,D1)缺乏Chrome所需的資源。 至少目標在B1(基本)階層或更高。

:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-30.cs
using 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;

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")
$vbLabelText   $csharpLabel

小心Azure App Service免費和共享層(F1,D1)沒有足夠資源來進行基於Chrome的PDF渲染。 使用至少B1(基本)階層或更高以避免記憶體溢出錯誤和過程超時。)]

相關入門指南: 如何在Azure上部署IronPDF

如何在AWS Lambda上部署

AWS Lambda需要基於Docker的部署以進行基於Chrome的PDF渲染。 預設的Lambda文件系統是只讀的,因此所有臨時和部署路徑必須指向/tmp

在任何渲染調用之前,在您的功能處理器的頂部配置這些設置。

using Amazon.Lambda.Core;
using 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.LinuxAndDockerDependenciesAutoConfig = 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;
using 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.LinuxAndDockerDependenciesAutoConfig = 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
$vbLabelText   $csharpLabel

請注意使用至少512 MB的記憶體60秒超時來配置您的Lambda函式。 基於Chrome的渲染佔用大量記憶體,而冷啟動需要額外的初始化時間來啟動嵌入式瀏覽器引擎。)]

相關入門指南: 如何在AWS Lambda上部署IronPDF

如何使用Docker部署

對於Docker部署,使用IronPdf.Linux NuGet套件來減少影像大小並避免運行時資產下載。 此套件包括優化的Linux原生二進制文件,適合容器化環境。

當Dockerfile已經通過LinuxAndDockerDependenciesAutoConfig = false。 在這種情況下,運行時自動安裝是多餘的,可能導致權限錯誤或更長的冷啟動。

平台 套件 關鍵配置
Ubuntu 22.04 / Debian IronPdf.Linux 預設,開箱即用
Alpine Linux IronPdf.Linux 在Dockerfile中通過apk安裝chromium
Amazon Linux 2 IronPdf.Linux Use LinuxAndDockerDependenciesAutoConfig = true
Windows容器 IronPdf 不需要額外配置


一個Ubuntu/Debian基礎影像的最小化多階段Dockerfile:

FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build
WORKDIR /app
COPY . .
RUN dotnet publish -c Release -o /out

FROM mcr.microsoft.com/dotnet/aspnet:10.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"]


:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf-33.cs
using 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;

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")
$vbLabelText   $csharpLabel

已在IronPDF v2026.6.1 · .NET 10 · 2026年6月上對此進行驗證。

相關入門指南: 如何使用IronPDF與Docker

5. 比較IronPDF與其他.NET PDF程式庫

IronPDF是許多團隊進行C# PDF生成時的首選解決方案,因為其強大的Chromium驅動渲染引擎,直觀的API和頻繁的產品改進。 讓我們比較IronPDF與其他PDF轉換器,以找到滿足您PDF生成需求的最佳選擇。

免費和開放源程式碼替代方案

一些可能會考慮的工具:

  • PuppeteerSharp: MIT許可的Puppeteer的.NET端口,驅動無頭Chrome。
  • Playwright for .NET: 微軟的Apache-2.0自動化程式庫,亦基於Chromium。
  • wkhtmltopdf: 一個長期存在的獨立HTML到PDF二進制。
  • 原生瀏覽器路徑: 直接從無頭瀏覽器或OS列印驅動程式列印到PDF。

首先值得區分的是:PuppeteerSharp和Playwright是瀏覽器自動化框架而非PDF程式庫。 它們在真實的Chromium頂層提供列印到PDF的調用,因此渲染保真度非常高,但PDF特有的如頁眉和頁腳,加密,簽名和PDF/A,以及瀏覽器的生命週期,則留給開發者:發布和更新Chromium二進制文件,處理並發性和崩潰恢復,手動構建文件結構。 Playwright增加了一個早期值得了解的限制:其PdfAsync僅在無頭Chromium中運行(而不是Firefox或WebKit),因此部署必須保證無頭Chrome,這在容器和無伺服器中很重要。

wkhtmltopdf又不一樣。 該項目於2024年被歸檔,最終版(0.12.6,2020年)運行的是~2012 Qt WebKit引擎,不再接收到安全修補,包括一個未修補的嚴重SSRF建議(CVE-2022-35583); 對於受信任的輸入中的簡單靜態文件仍可用,但對於公開輸出的文件則不合適。 原生瀏覽器路徑根本不需要程式庫,但代價是任何.NET原生的PDF API或伺服器端自動化的真正控制。

對於原型,內部工具和零預算工作,這些都是合法的選擇。 下面的比較涵蓋了商業程式庫的功能特徵。

快速決策矩陣:IronPDF對比其他.NET PDF轉換器

解決方案 何時使用 最適合
IronPDF 將現代網站/HTML轉換為PDF,精確的視覺保真度。 需要可靠HTML渲染引擎,動態內容和專業支援的企業應用。
wkhtmltopdf 非關鍵應用中簡單的HTML轉換,可接受過時的渲染。 使用傳統HTML/CSS的基礎文件生成。
Syncfusion 當已經投資於Syncfusion生態系統或有資格獲得免費社區許可。 使用多個Syncfusion組件的組織。
Aspose.PDF 當HTML渲染質量不太重要時的複雜PDF操控。 超出HTML轉換的廣泛PDF編輯功能。

相關比較:

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

Show the full feature-by-feature table (10 .NET PDF libraries)
功能 ★ Recommended IronPDF wkhtmltopdf iText Aspose.PDF Syncfusion Apryse SelectPdf Spire.PDF PDFSharp QuestPDF
渲染和轉換
渲染準確性 像素級精準 最佳 列印樣式 僅限程式化 良好 良好 良好 良好 低層次 不渲染 Code-First布局
HTML5支持 Full 過時 附加功能 Partial Full Module Full 有限 No 沒有(Code-First)
CSS3支持 Full 有限 附加功能 Partial Full Module Full 有限 No 沒有(Code-First)
JavaScript執行 Full Best No No 有爭議 有限 有限 有限 非常有限 No No
HTML→PDF(現代布局) 嵌入式Chromium 最佳 Qt WebKit(過時) 付費附加 部分;JS有爭議 Blink 引擎 需要模塊 完整的HTML→PDF 基於圖像 No 不是HTML渲染器
PDF→圖像渲染 No No 有限 No 僅限自己文件
文件操作
程式化生成PDF No HTML Only Basic 是(流暢API)
合併,拆分和重新排列 No 有限
頁眉 / 頁腳 / 頁碼 HTML/文字/圖像 最佳 有限 通過事件 通過事件 模板 手動 僅手動 一流插槽
水印和蓋章 文字和圖像 No 有限 No 是(覆蓋)
從PDF中提取文字 No Basic No
掃描PDF的OCR 通過IronOCR 整合 No 附加功能 獨立產品 附加功能 附加功能 No 變通方法 No No
安全性和合規性
數位簽名 No 樣例程式碼 No No 未記錄
PDF/A合規性 是 (PDF/A-3B) No Full PDF/A 驗證和建立 需要原生SDK PDF A合規 No 有限 PDF/A-2x & 3x
平台和開發者體驗
跨平台 Windows · Linux · macOS All 3 依賴於二進制 .NET標準2.0 Linux額外設置 Blink + .NET伺服器 原生SDK 僅限Windows * 有限的Linux文件 專注於Windows Win/Linux/macOS
雲和Docker部署 Azure · AWS · Docker Best 複雜;舊技術 多個包 部分;容器 Blink 需要額外 原生依賴 僅限Windows 有限的資訊 簡單;輕量 Docker/K8s; Local
支援和文件
文件 豐富 + 複製/粘貼最佳 部分CLI文件 豐富;知識庫 廣泛;GitHub 幫助中心 跨語言目錄 入門指南 程式指南 社區指南 結構化 + 陪伴應用
開發者支援 24/7工程師 最佳 僅限社區 包含訂閱 論壇 + 付費 24/5直接追蹤 商業 電子郵件 論壇 + 電子郵件 僅限社區 Community + GitHub
授權和定價
授權模式 永久 開源 AGPL / 訂閱 永久 年訂閱 自定義 / 消費 永久 永久 免費(MIT) MIT 免費 / 付費層
起始價格 $liteLicense Perpetual · 1 Developer style="color:#16a34a">Free ~K/年 自定義報價 ,175+ Per Developer 自定義報價 免費 <M(社區) ~K+/年 自定義報價 9+ Perpetual 9 永久 · 1年更新 style="color:#16a34a">Free style="color:#16a34a">Free Community MIT <M
免費試用 30天 · 完整功能 無限制 不適用(免費) 30天 是(水印) Community <$1M Rev 社區(5頁) 免費(10頁) 不適用(免費) N/A (MIT Free <$1M)
定價透明度 已發布且清晰 最佳 開源 Complex AGPL 多層 聯繫以獲取報價 無公開定價 已發布 已發布 MIT; 無限制 MIT; 信任基礎

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

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

https://www.reddit.com/

Reddit主頁截圖顯示動態內容,現代風格和交互元素,用於PDF轉換測試

IronPDF

IronPDF轉換結果顯示Reddit主頁的像素完美渲染,保留所有動態內容,樣式和交互元素

IronPDF提供像素完美的結果,準確保留了所有動態網頁內容,現代網頁字體樣式和交互元素,與Chrome中顯示的完全相同,僅需幾行程式碼。

Syncfusion

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是其各自所有者的商標。 本網站與他們無關,也未獲得他們的認可。 所有名稱,標誌和品牌均屬其所有者,且比較基於撰寫時的公開資訊。

總結

本指南涵蓋了將HTML轉換為.NET中的PDF所需的一切:從基本字串轉換到異步處理,數位簽名和批量生成等高級功能。 我們演示了三種轉換方法,基本配置,高級功能和安全設置,並通過對動態文件生成的現實測試比較了IronPDF與其他程式庫。

儘管競爭對手在處理現代網站時遇到了困難或需要複雜的變通方法,IronPDF以最小的程式碼和強大的渲染引擎提供了完美的結果。

準備簡化您的PDF工作流程,並僅使用幾行程式碼來體驗多功能的PDF生成嗎? 通過NuGet庫管理器安裝IronPDF(或在Visual Studio中選擇管理NuGet庫)並立即將您的第一個HTML轉換為PDF。

開始您的免費30天試用,進行無水印的生產測試。 靈活的授權從$999開始,提供透明的團隊定價,可根據您的需求擴展。

查看IronPDF授權

6. 疑難排解與技術支援

在HTML到PDF轉換中遇到以下錯誤? IronPDF通過https://ironpdf.com/上的聊天小工具提供7X24小時工程師支援。

快速修復常見錯誤

  • 首次渲染缓慢? 正常。 Chrome初始化需要2–3秒,然後加快速度。
  • 雲問題? 至少使用Azure B1或相等的資源。
  • 資產丟失? 設置基本路徑或嵌入為base64。
  • 元素缺失? 新增RenderDelay用於JavaScript的執行。
  • 渲染時的記憶體? 更新到最新版本(v2026.6.1),修復HTML到PDF,印章和頁眉/頁腳。
  • 表單域問題(例如長文字域,複選框)? 在v2025.7.17中修復; 確保複選框名稱唯一。
  • 自定義頁眉/頁腳剪切或特殊字元損壞? 在v2025.8.8中解決; 測試單詞換行和元資料。

24/7從構建IronPDF的工程師那裡獲得幫助

下一步

如何合併或拆分PDF文件
查看操作指南
如何向PDF文件新增自定義頁眉和頁腳
查看操作指南
如何在PDF中修訂文字和區域
查看操作指南

常見問題

如何在C#中將HTML轉換為PDF?

您可以使用基於Chrome渲染的程式庫將HTML、CSS3和JavaScript轉換為像素完美的PDF。像IronPDF這樣的工具允許您從URLs、HTML字串或檔案進行渲染,同時支援標頭、認證和列印設置。

什麼是.NET的最佳HTML到PDF程式庫?

最佳程式庫應支援準確的Chrome渲染、跨平台部署和企業功能。IronPDF涵蓋了這些所有功能,可在Windows、Linux、macOS和Docker上運行,並支援安全性、簽名、合規性和可擴展的.NET應用程式。

什麼是.NET的免費HTML到PDF選項?

開源路徑如wkhtmltopdf、PuppeteerSharp和Playwright以無成本將HTML轉換為PDF,但以便利交換維護——較舊的渲染引擎、捆綁的瀏覽器二進位檔或手動伺服器配置。IronPDF是商業化的,擁有30天免費試用,具備完整功能且在開發過程中無浮水印;生產授權從$999起。查看定價 →

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

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

如何將網頁URL轉換為C#中的PDF文件?

您可以使用RenderUrlAsPdf方法直接將網頁URL轉換為PDF,以保持樣式、圖片和互動元素如表單和連結。

如何在C#中將HTML文件轉換為PDF?

使用ChromePdfRenderer.RenderHtmlFileAsPdf("path/to/file.html")將本地HTML文件轉換為PDF。IronPDF自動解析所有資產相對路徑(圖片、CSS、JS)。

如何將ASP.NET Razor Pages或MVC Views轉換為PDF?

IronPDF提供專用的擴展包—IronPdf.Extensions.Razor用於Razor Pages和IronPdf.Extensions.Mvc.Core用於MVC Views。使用RenderRazorToPdfRenderRazorViewToPdf與依賴注入一起直接從控制器轉換視圖為PDF。查看Razor指南 →

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

通過設置RenderingOptions.EnableJavaScript = true啟用JavaScript渲染,並使用RenderingOptions.WaitFor.RenderDelay新增渲染延遲以確保動態內容在轉換前完全載入。查看WaitFor指南 →

為什麼我的HTML到PDF輸出是空白或缺少內容?

空白或部分PDF幾乎總是表示頁面在捕獲時未完成渲染,或其資產未載入。對於動態或JavaScript驅動的內容,設置RenderingOptions.EnableJavaScript = true並新增WaitFor.RenderDelay(或WaitFor.HtmlQuerySelector)以便Chrome先完成繪製。如果本地圖片、CSS或字型缺失,則傳遞BaseUrlPath以正確解析相對路徑。查看WaitFor指南 →

在C#中新增PDF文件的標頭和頁尾的最佳方法是什麼?

使用TextHeaderFooter類進行簡單文字標頭和頁尾,或者使用HtmlHeaderFooter類進行更複雜的HTML內容。您可以包括動態佔位符如{page}{total-pages}{date}以自動生成內容。查看標頭和頁尾指南 →

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

通過在列印媒體型別的CSS塊中使用CSS屬性如page-break-after: alwayspage-break-inside: avoid控制PDF中的分頁。查看分頁指南 →

有哪些選項可用於設置PDF中的紙張大小和方向?

使用RenderingOptions.PaperSize設置紙張大小(選項包括A4、Letter、Legal等)和RenderingOptions.PaperOrientation設定方向為縱向或橫向。還支援以毫米或英寸為單位的自訂大小。查看紙張大小指南 →

我可以將已認證的網頁轉換為PDF嗎?

可以。IronPDF支援Cookie、自訂HTTP標頭和基於表單的認證。通過ChromePdfRenderer.RenderingOptions.CustomCookies設置Cookie,或傳遞身份驗證標頭進行基於令牌的認證。還支援Windows NTLM和Kerberos認證。查看Cookie指南 →

我可以從單個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專案,無需額外配置。無論您是使用網頁、控制台、桌面或微服務應用程式,IronPDF都可以「開箱即用」與.NET 10一起工作。

IronPDF是免費使用的嗎?

IronPDF提供30天免費試用,具備完整功能且在開發中無浮水印。商業用途需要從$999起的商業授權。Lite、Plus、Professional和Enterprise級別授權可用。查看定價 →

該程式庫的渲染質量與其他選項如wkhtmltopdf相比如何?

此程式庫使用現代Chrome渲染引擎生成像素完美的PDF,而wkhtmltopdf使用過時的WebKit引擎。不需要伺服器執行檔,支援完整的JavaScript/CSS3,定期更新並提供專業支持。

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

PDFSharp缺乏內建的HTML到PDF轉換,需要復雜的變通辦法。此程式庫提供直接的HTML/URL/文件轉換,具有高級API,支援現代網頁技術,並定期更新提供專業支持。查看PDFSharp比較 →

這種程式庫比iTextSharp更適合作為HTML轉換選擇的原因是什麼?

iTextSharp的免費版本不支援本機HTML到PDF轉換,且API較為複雜。此程式庫提供無縫的HTML轉換,具備直觀的API、全面的CSS3/JavaScript支援,並且沒有AGPL授權限制。查看iTextSharp比較 →

該程式庫的渲染質量與Aspose.PDF相比如何?

此程式庫生成像素完美的Chrome質量PDF,而Aspose.PDF常常漏掉樣式和動態內容。Aspose需要手動下載HTML進行URL轉換,但此程式庫直接轉換URLs具有更高的準確性。查看Aspose比較 →

為什麼可能會選擇此程式庫而不是Syncfusion PDF?

雖然Syncfusion功能強大,但此程式庫的優化Chrome引擎運行更快,並更有效處理動態內容。它提供了一個更簡單的API和額外的功能,如OCR和條碼生成。查看Syncfusion比較 →

Jacob Mellor,首席技術官 @ Team Iron
首席技術官

Jacob Mellor是Iron Software的首席技術官,一位在C# PDF技術上開創先河的遠見工程師。作為Iron Software核心程式碼庫的原開發者,他從創立以來就一直在塑造公司的產品架構,與首席執行官Cameron Rimington一起將公司轉變為服務於NASA、特斯拉和全球政府公司的50多名人員的公司。

Jacob擁有曼徹斯特大學的土木工程一等榮譽學士學位(BEng),於1998-2001年之間獲得。在1999年於倫敦創辦他的第一家軟體公司並於2005年建立了他的第一批.NET元組件後,他專注於解決Microsoft生態系統中的複雜問題。

他的旗艦IronPDF和Iron Suite .NET程式庫在全球獲得了超過3000萬次NuGet安裝依據,他的基礎程式碼基繼續支援著世界各地開發者使用的工具。擁有25年的商業經驗和41年的程式設計專業知識,他仍專注於推動企業級C#、Java和Python PDF技術的創新,同時指導下一代技術領導者。

由...審核
Jeff Fritz
Jeffrey T. Fritz
首席計劃經理 - .NET社區團隊
Jeff還是.NET和Visual Studio團隊的首席計劃經理。他是.NET Conf虛擬會議系列的執行製作人,並主持每週兩次的開發者直播節目'Fritz and Friends',在節目中討論技術並與觀眾一起撰寫程式碼。Jeff撰寫工作坊、演講和內容計劃,為微軟開發者的最大活動如Microsoft Build、Microsoft Ignite、.NET Conf和Microsoft MVP Summit提供內容支援。
準備開始了嗎?
Nuget 下載 19,936,792 | 版本: 2026.7 剛剛發布
Still Scrolling Icon

還在捲動嗎?

想快速獲得證明嗎? PM > Install-Package IronPdf
執行範例 看您的HTML變成PDF。