在 Windows Forms PictureBox 中渲染 PDF 頁面 | C# 指南
如果您正在使用DinkToPdf中的HtmlToPdfDocument C#,並遇到CSS支持有限、外部依賴或性能問題,那麼您並不孤單。 許多.NET開發人員正在尋找一種HTML到PDF的轉換器,它可以處理現代CSS、網頁字體和JavaScript執行,無需本地庫設置或命令行工具。 本指南將向您展示如何用IronPDF代替DinkToPdf——這是一個基於Chromium的渲染引擎的.NET庫,只需幾行程式碼即可將HTML文件、網頁和HTML字串轉換為高質量的PDF。
如何通過NuGet安裝IronPDF?
在編寫任何轉換程式碼之前,您需要將IronPDF新增到您的項目中。 最快捷的途徑是使用NuGet Package Manager CLI:
dotnet add package IronPdf
或者,打開Visual Studio中的NuGet Package Manager Console並運行:
Install-Package IronPdf
IronPDF目標是.NET 8、.NET 9、.NET 10、.NET Standard 2.0和.NET Framework 4.6.2或更高版本。 不需要額外的本地二進制文件、wkhtmltopdf安裝或命令行工具設置。 該包捆綁了Chromium渲染引擎,並自動解決所有依賴關系。 一旦安裝完畢,您可以通過程式碼或環境變數設置您的許可密鑰並立即開始生成PDF。 對於詳細的安裝指南,IronPDF入門頁面涵蓋了所有環境的安裝步驟。
DinkToPdf與IronPDF有什麼不同?
DinkToPdf是一個基於wkhtmltopdf的.NET Core包裝器,使用較舊的WebKit渲染引擎。雖然開源,但開發人員經常在生產環境中將HTML轉換為PDF時面臨挑戰。
| 功能 | DinkToPdf | IronPDF |
|---|---|---|
| 渲染引擎 | WebKit(過時) | Chromium(現代) |
| CSS支持 | CSS支持有限 | 完全支持CSS3,現代CSS |
| JavaScript執行 | 有限 | 完整的JavaScript渲染 |
| 本地依賴項 | 需要wkhtmltopdf二進制文件 | 無外部依賴項 |
| 網頁字體 | 部分支持 | 完全支持 |
| .NET Core / .NET 5+ | 是 | 是(.NET Core、Framework、Standard) |
| Azure App Service | 複雜的設置 | 開箱即用 |
| 執行緒 | 需要使用單例 | 執行緒安全 |
| HTML模板 | 基礎 | 高級功能 |
| 可填寫的PDF表單 | 否 | 是 |
核心差異在於渲染引擎。DinkToPdf的WebKit引擎在處理複雜文件、現代CSS和動態網頁內容時存在困難。 IronPDF的Chromium引擎生成的PDF文件與瀏覽器渲染的效果完全一致。 欲了解更深入的比較,請參見IronPDF與DinkToPdf比較頁面。
DinkToPdf的HtmlToPdfDocument類有哪些問題?

DinkToPdf中的HtmlToPdfDocument類需要冗長的配置,限制了PDF轉換質量並影響開發者體驗:
using DinkToPdf;
var converter = new SynchronizedConverter(new PdfTools());
var doc = new HtmlToPdfDocument()
{
GlobalSettings = { PaperSize = PaperKind.A4, Out = "output.pdf" },
Objects = { new ObjectSettings() { HtmlContent = "<h1>Hello</h1>" } }
};
converter.Convert(doc);
using DinkToPdf;
var converter = new SynchronizedConverter(new PdfTools());
var doc = new HtmlToPdfDocument()
{
GlobalSettings = { PaperSize = PaperKind.A4, Out = "output.pdf" },
Objects = { new ObjectSettings() { HtmlContent = "<h1>Hello</h1>" } }
};
converter.Convert(doc);
Imports DinkToPdf
Dim converter = New SynchronizedConverter(New PdfTools())
Dim doc = New HtmlToPdfDocument() With {
.GlobalSettings = New GlobalSettings() With {
.PaperSize = PaperKind.A4,
.Out = "output.pdf"
},
.Objects = {New ObjectSettings() With {.HtmlContent = "<h1>Hello</h1>"}}
}
converter.Convert(doc)
DinkToPdf PDF輸出

常見問題包括:即使是簡單任務也會慢速生成PDF,執行緒在Web伺服器上的並發問題,以及難以處理具有JavaScript的Web內容。 wkhtmltopdf命令行工具在無法安裝系統級二進制文件的Azure App Service和無伺服器環境中建立了部署挑戰。 開發人員還報告說,在並發載荷下,單例轉換器模式成為性能瓶頸。
除了性能之外,GitHub上的DinkToPdf項目顯示有限的維護活動,意味著CSS渲染或SSL處理中的問題很少得到修復。 對於每天處理成千上萬個PDF的生產應用程式而言,這些缺口是不可接受的。 當CSS Grid佈局崩潰或網頁字體無法載入時,您需要一個可以跟踪現代瀏覽器行為的庫,而不是一個停滯不前、渲染引擎來自2010年初的庫。
如何使用IronPDF將HTML字串轉換為PDF?

IronPDF用更清晰的API和卓越的輸出質量簡化了HTML到PDF的轉換。 ChromePdfRenderer處理所有HTML內容——從簡單的HTML字串到具有外部樣式表、Google字體和JavaScript驅動的佈局的複雜HTML頁面。
using IronPdf;
var renderer = new ChromePdfRenderer();
string htmlContent = @"
<!DOCTYPE html>
<html>
<head>
<style>
body { font-size: 14px; text-align: center; }
h1 { color: #2563eb; }
</style>
</head>
<body>
<h1>Professional Invoice</h1>
<p>Generated with modern CSS support</p>
</body>
</html>";
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("invoice.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
string htmlContent = @"
<!DOCTYPE html>
<html>
<head>
<style>
body { font-size: 14px; text-align: center; }
h1 { color: #2563eb; }
</style>
</head>
<body>
<h1>Professional Invoice</h1>
<p>Generated with modern CSS support</p>
</body>
</html>";
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("invoice.pdf");
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
Dim htmlContent As String = "
<!DOCTYPE html>
<html>
<head>
<style>
body { font-size: 14px; text-align: center; }
h1 { color: #2563eb; }
</style>
</head>
<body>
<h1>Professional Invoice</h1>
<p>Generated with modern CSS support</p>
</body>
</html>"
Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
pdf.SaveAs("invoice.pdf")
IronPDF HTML字串輸出

此程式碼示範了IronPDF在轉換過程中如何處理HTML和CSS,生成的PDF文件具有適當的字體大小渲染和文字對齊——而且不需要外部依賴項。 RenderHtmlAsPdf方法接受任何有效的HTML5字串,包括內聯樣式、嵌入的腳本和圖像的資料URI。
如何將HTML文件轉換為PDF?
對於儲存在磁碟上的HTML文件轉換:
using IronPdf;
var renderer = new ChromePdfRenderer();
var doc = renderer.RenderHtmlFileAsPdf("templates/input.html");
doc.SaveAs("example.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
var doc = renderer.RenderHtmlFileAsPdf("templates/input.html");
doc.SaveAs("example.pdf");
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
Dim doc = renderer.RenderHtmlFileAsPdf("templates/input.html")
doc.SaveAs("example.pdf")

RenderHtmlFileAsPdf方法解決了相對於磁碟上HTML文件的圖片、樣式表和腳本的相對路徑,因此現有模板可無需修改即可工作。 這使現有報告模板的遷移變得簡單。
如何將網頁URL轉換為PDF?
轉換即時網頁內容是IronPDF相對於DinkToPdf受限JavaScript渲染的優勢所在。 IronPDF的Chromium引擎支持動態HTML元素、單頁應用程式和交互式表單。
using IronPdf;
var renderer = new ChromePdfRenderer();
// Enable JavaScript execution for dynamic content
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.WaitFor.RenderDelay(500);
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
string url = "https://en.wikipedia.org/wiki/Main_Page";
var page = renderer.RenderUrlAsPdf(url);
page.SaveAs("webpage.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
// Enable JavaScript execution for dynamic content
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.WaitFor.RenderDelay(500);
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
string url = "https://en.wikipedia.org/wiki/Main_Page";
var page = renderer.RenderUrlAsPdf(url);
page.SaveAs("webpage.pdf");
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
' Enable JavaScript execution for dynamic content
renderer.RenderingOptions.EnableJavaScript = True
renderer.RenderingOptions.WaitFor.RenderDelay(500)
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
Dim url As String = "https://en.wikipedia.org/wiki/Main_Page"
Dim page = renderer.RenderUrlAsPdf(url)
page.SaveAs("webpage.pdf")
轉換的URL到PDF

這種方法非常適合從Web表單生成發票或存檔即時儀表板。 渲染引擎在生成PDF文件之前處理所有的Web字體、CSS樣式和JavaScript。WaitFor API讓您可以精準控制Chromium引擎何時認為頁面可以進行捕捉——您可以等待特定的DOM元素、網路閒置狀態或自定義JavaScript條件,這對於大規模從動態內容生成PDF至關重要。
對於需要身份驗證的頁面,您可以將HTTP頭資訊、Cookies或表單POST資料直接傳遞給渲染器。 URL到PDF文件詳細介紹了這些高級場景。
如何配置PDF輸出設置?
這兩個庫都提供配置選項,但IronPDF通過其RenderingOptions物件提供更直觀的生成PDF控制:
using IronPdf;
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 25;
renderer.RenderingOptions.MarginBottom = 25;
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
renderer.RenderingOptions.TextHeader.CenterText = "Company Report";
renderer.RenderingOptions.TextFooter.CenterText = "{page} of {total-pages}";
var document = renderer.RenderHtmlAsPdf("<h1 style='text-align: center;'>Quarterly Report</h1>");
document.SaveAs("configured-report.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 25;
renderer.RenderingOptions.MarginBottom = 25;
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
renderer.RenderingOptions.TextHeader.CenterText = "Company Report";
renderer.RenderingOptions.TextFooter.CenterText = "{page} of {total-pages}";
var document = renderer.RenderHtmlAsPdf("<h1 style='text-align: center;'>Quarterly Report</h1>");
document.SaveAs("configured-report.pdf");
Imports IronPdf
Dim renderer = New ChromePdfRenderer()
renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4
renderer.RenderingOptions.MarginTop = 25
renderer.RenderingOptions.MarginBottom = 25
renderer.RenderingOptions.PrintHtmlBackgrounds = True
renderer.RenderingOptions.TextHeader.CenterText = "Company Report"
renderer.RenderingOptions.TextFooter.CenterText = "{page} of {total-pages}"
Dim document = renderer.RenderHtmlAsPdf("<h1 style='text-align: center;'>Quarterly Report</h1>")
document.SaveAs("configured-report.pdf")
具有自定義設置的輸出PDF

這些選項控制紙張大小、邊距、頁眉和頁脚。 IronPDF還支持自定義HTML頁眉和頁脚,它接受完整的HTML和CSS,讓您可以在頁眉和頁脚區域放置標誌、動態頁面計數和樣式化文字。 為了文件安全性,PDF加密和密碼API允許您在生成後限制列印、複製或編輯。
如何合併多個PDF?
當您需要將多個HTML文件合併成一個PDF時,IronPDF提供了一個靜態合併方法:
using IronPdf;
var renderer = new ChromePdfRenderer();
var pdf1 = renderer.RenderHtmlAsPdf("<h1>Section One</h1>");
var pdf2 = renderer.RenderHtmlAsPdf("<h1>Section Two</h1>");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged-report.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
var pdf1 = renderer.RenderHtmlAsPdf("<h1>Section One</h1>");
var pdf2 = renderer.RenderHtmlAsPdf("<h1>Section Two</h1>");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged-report.pdf");
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
Dim pdf1 = renderer.RenderHtmlAsPdf("<h1>Section One</h1>")
Dim pdf2 = renderer.RenderHtmlAsPdf("<h1>Section Two</h1>")
Dim merged = PdfDocument.Merge(pdf1, pdf2)
merged.SaveAs("merged-report.pdf")
PDF合併文件展示了如何從多個源文件組裝大文件,對所有部分應用一致的頁眉和頁脚,並以程式方式重新排列頁面。 這在獨立構建的報告生成管道中非常有用,因為它能夠在合併成單個最終文件之前獨立構建各個部分。
為什麼要從DinkToPdf轉向IronPDF?
對於在.NET Core應用程式中使用HtmlToPdfDocument的開發人員,IronPDF提供了解決每個痛點的關鍵優勢:
- 現代渲染:Chromium引擎可以處理HTML結構、現代CSS和JavaScript執行,以建立像素完美的PDF文件。
- 零設置:不需要wkhtmltopdf二進制文件或命令行工具配置——只需新增NuGet包
- 更好的性能:更快的PDF轉換,不受單例執行緒限制; the renderer is thread-safe and can run concurrent conversions
- 全方位Web支持:轉換具有Web字體的HTML、CSS動畫、SVG圖形和複雜的HTML模板
- 企業級部署:部署到Azure App Service、AWS Lambda、Docker容器和傳統Web伺服器,無需額外配置
- 高級PDF功能:可填寫的PDF表單,數位簽章,PDF/A合規性和水印
- 積極維護: IronPDF定期發布更新,跟蹤最新的Chromium版本和.NET運行時
根據Chromium項目的發布計劃,該引擎每四週接收安全修補。 IronPDF在每個主要版本中捆綁了更新的Chromium版本,確保您的PDF生成保持最新,無需手動二進制文件管理。 這對於需要證明其依賴項已修補以防已知漏洞的安全意識團隊來說很重要。
IronPDF文件庫涵蓋超過50個操作指南,涉及從拆分PDF到提取文字和新增註釋。
下一步如何?
雖然DinkToPdf的HtmlToPdfDocument類提供了基本的HTML到PDF轉換,但其過時的WebKit引擎和外部依賴項給現代的.NET開發帶來了摩擦。 IronPDF利用基於Chromium的渲染提供了更好的結果,全面支持CSS,並且零依賴部署。 無論您是構建小型內部報告工具還是高容量的文件生成服務,遷移路徑都很簡單:安裝NuGet包,將DinkToPdf的API調用替換為ChromePdfRenderer的等效調用,然後從您的部署管道中移除wkhtmltopdf二進制文件。
要向前邁進,請選擇適合您情況的途徑:
- 立即試用: 開始免費的IronPDF試用,無需任何承諾即可從任何HTML內容生成PDF文件
- 深入比較: 閱讀IronPDF與DinkToPdf比較以獲取完整的技術分析
- 探索功能: 瀏覽IronPDF文件以了解超越HTML到PDF轉換的功能
- 檢查許可: 查看IronPDF許可頁面以獲取適合個人開發人員、團隊和企業部署的選項
- 獲得社區支持: IronPDF支持頁面提供工程支持和社區資源
常見問題
什麼是 IronPDF?
IronPDF 是一個 .NET 程式庫,用於使用 Chromium 渲染引擎將 HTML 轉換為 PDF。它支援現代 CSS、JavaScript 執行和網頁字型,且不需要本機相依性或外部二進位檔。
為什麼我應該選擇 IronPDF 而不是 DinkToPdf?
IronPDF 提供完整的 CSS3 支援、無本機程式庫或 wkhtmltopdf 設置、執行緒安全的并發轉換和簡單的部署到 Azure App Service 和 Docker -- 解決所有 DinkToPdf 的主要痛點。
IronPDF 如何改善 HTML 到 PDF 轉換的性能?
IronPDF 使用 Chromium 渲染引擎,能夠高效地處理 HTML、CSS 和 JavaScript。其執行緒安全設計消除了 DinkToPdf 在并發負載下受影響的單例瓶頸。
IronPDF 支援現代網頁字型嗎?
是的。IronPDF 的 Chromium 引擎完全支援 Google 字型、系統字型和嵌入在 HTML 中的自訂網頁字型,將在輸出 PDF 中準確渲染字型。
IronPDF 可以在 PDF 轉換期間執行 JavaScript 嗎?
是的。將 RenderingOptions 中的 EnableJavaScript 設置為 true,並使用 WaitFor API 控制 Chromium 認為網頁準備就緒的時間點,以確保動態內容在捕獲之前已完全渲染。
using IronPDF 需要哪些相依性?
IronPDF 不需要本機相依性。通過 NuGet 安裝,套件内部管理 Chromium 引擎。不需要 wkhtmltopdf 二進位檔或命令行工具。
IronPDF 是否提供完整的 CSS 支援?
是的。IronPDF 支援 CSS3、彈性盒模型、CSS 網格、自訂屬性和媒體查詢,能夠準確渲染複雜的 HTML 文件。
IronPDF 如何處理外部程式庫或工具?
IronPDF 不依賴外部程式庫或命令行工具。一切都包含在 NuGet 套件中,簡化了部署,消除了相容性問題。
IronPDF 使用什麼渲染引擎?
IronPDF 使用基於 Chromium 的渲染引擎,這是驅動 Google Chrome 的相同引擎,提供準確和高效能的 HTML 到 PDF 轉換。
IronPDF 是 .NET 開發者尋找 HTML 到 PDF 解決方案的合適選擇嗎?
是的。IronPDF 目標 .NET 8、.NET 9、.NET 10、.NET Standard 2.0 和 .NET Framework 4.6.2 或更高版本,適用於現代和舊版 .NET 應用程式。




