跳過到頁腳內容
使用IRONPDF

HtmlToPdfDocument C# - DinkToPdf 替代軟體 | IronPDF

如果您正在使用 DinkToPdf 中的 HtmlToPdfDocument C# 並遇到有限的 CSS 支援、外部相依性或效能問題,您並不孤單。 許多 .NET 開發者正在尋找一款 HTML 轉 PDF 轉換器,該工具需能處理現代 CSS、網頁字型及 JavaScript 執行,且無需安裝原生函式庫或使用命令列工具。 本指南將向您展示如何以 IronPDF 取代 DinkToPdf —— 這是採用 Chromium 渲染引擎的 .NET 函式庫,僅需幾行程式碼即可將 HTML 檔案、網頁及 HTML 字串轉換為高品質的 PDF 檔案。

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

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

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

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

    arrow pointer

如何透過 NuGet 安裝 IronPDF?

在編寫任何轉換程式碼之前,您需要將 IronPDF 加入您的專案中。 最快捷的方式是使用 NuGet 套件管理員 CLI:

dotnet add package IronPdf
dotnet add package IronPdf
SHELL

或者,在 Visual Studio 中開啟 NuGet 套件管理員主控台並執行:

Install-Package IronPdf
Install-Package IronPdf
SHELL

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 功能比較
特點 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 類會帶來哪些問題?

HtmlToPdfDocument C#:DinkToPdf替代HTML轉PDF:圖片 1 - DinkToPdf

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

DinkToPdf PDF 輸出。

HtmlToPdfDocument C#:DinkToPdf替代HTML轉PDF:圖片 2 - DinkToPdf 範例輸出 PDF

常見問題包括:即使是簡單的任務,PDF 生成速度也過慢;網頁伺服器上的多執行緒處理複雜;以及難以處理含有 JavaScript 的網頁內容。 wkhtmltopdf 命令列工具為 Azure App Service 及無伺服器環境帶來部署上的挑戰,因為在這些環境中無法安裝系統層級的二進位檔。 開發人員亦指出,在並發負載下,單例轉換器模式會成為效能瓶頸。

除了效能問題外,GitHub 上的 DinkToPdf 專案顯示維護活動有限,這意味著 CSS 渲染或 SSL 處理方面的錯誤很少獲得修正。 對於每日處理數千份 PDF 的生產環境應用程式而言,這些缺口是無法接受的。 當 CSS Grid 佈局出現錯誤或網頁字型無法載入時,您需要的是能追蹤現代瀏覽器行為的函式庫,而非仍停留在 2010 年代初期渲染引擎時代的過時方案。

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

HtmlToPdfDocument C#:DinkToPdf替代HTML到PDF轉換:圖片 3 - IronPDF

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

IronPDF HTML 字串輸出

HtmlToPdfDocument C#:DinkToPdf替代HTML轉PDF:圖片 4 - IronPDF 範例簡單的 HTML 字串轉 PDF 輸出

此程式碼示範了 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")
$vbLabelText   $csharpLabel

HtmlToPdfDocument C#:DinkToPdf 是 HTML 轉 PDF 的替代方案:圖片 5 - HTML 檔案轉換為 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")
$vbLabelText   $csharpLabel

將 URL 轉換為 PDF

HtmlToPdfDocument C#:DinkToPdf 是 HTML 至 PDF 轉換的替代方案:圖片 6 - 從 URL 內容渲染 PDF

此方法非常適合用於從網頁表單生成發票,或將即時儀表板進行歸檔。 渲染引擎會在產生 PDF 檔案前,先處理所有網頁字型、CSS 樣式及 JavaScript。WaitFor API 讓您能精確控制 Chromium 引擎何時判定頁面已準備好進行擷取——您可以等待特定的 DOM 元素、網路閒置狀態,或自訂的 JavaScript 條件,這對於從動態內容生成大規模 PDF 至關重要。

對於需要驗證的頁面,您可以直接將 HTTP 標頭、Cookie 或表單 POST 資料傳遞給渲染器。 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")
$vbLabelText   $csharpLabel

輸出帶有自訂設定的 PDF

HtmlToPdfDocument C#:DinkToPdf替代HTML轉換為PDF:圖像 7 - 自訂 PDF 輸出

這些選項用於控制紙張尺寸、邊距、頁首及頁尾。 IronPDF 亦支援可接受完整 HTML 與 CSS 的自訂 HTML 頁首與頁尾,讓您能在頁首與頁尾區域放置標誌、動態頁數計數器及樣式化文字。 為確保文件安全性,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")
$vbLabelText   $csharpLabel

PDF 合併文件說明了如何從多個來源檔案組合大型文件、在所有章節中套用一致的頁首與頁尾,以及透過程式碼重新排列頁面順序。 這對於報告生成流程特別有用,該流程會先獨立建構各個章節,再將其組合成一份最終文件。

您為何要從 DinkToPdf 轉換到 IronPDF?

對於在 .NET Core 應用程式中使用 HtmlToPdfDocument 的開發人員來說,IronPDF 提供了直接解決每個痛點的關鍵優勢:

  • 現代渲染:Chromium 引擎負責處理 HTML 結構、現代 CSS 以及 JavaScript 執行,以生成像素級精準的 PDF 文件
  • 零設定:無需 wkhtmltopdf 二進位檔或命令列工具設定——只需新增 NuGet 套件
  • 更佳效能:擺脫單執行緒限制,實現更快速的 PDF 轉換; 渲染器是線程安全的,可以並發執行轉換。
  • 完整網頁支援:可轉換包含網頁字型、CSS 動畫、SVG 圖形及複雜 HTML 範本的 HTML 內容
  • Enterprise 部署:無需額外配置即可部署至 Azure App Service、AWS Lambda、Docker 容器及傳統網頁伺服器
  • 進階 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 二進位。

接下來,請選擇符合您情況的選項:

!{--01001100010010010100001001010010010000010101001001011001010111110100011101000101010101 01000101111101010011010101000100000101010010010101000100010101000100010111110101011101001000110 1010101000100100001011111010100000101001001001111010001000101010101010000110101010100101010101011 10101010001010010010010010010000010100110001011111010000100100110001001111101000011010010111111010000110100101110--

常見問題解答

什麼是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認為頁面已準備就緒的時機,確保動態內容在捕捉前完全渲染。

使用 IronPDF 需要哪些依賴項?

IronPDF不需要原生依賴。通過NuGet安裝,該套件內部管理Chromium引擎。無需wkhtmltopdf二進位檔或命令行工具。

IronPDF是否完全支援CSS?

是的。IronPDF支援CSS3、Flexbox、CSS Grid、自定義屬性和媒體查詢,能夠準確渲染複雜的HTML文件。

IronPDF如何處理外部函式庫或工具?

IronPDF不依賴外部程式庫或命令行工具。一切都在NuGet套件中打包,簡化了部署並消除了相容性問題。

IronPDF使用什麼渲染引擎?

IronPDF使用Chromium為基礎的渲染引擎,它與Google Chrome中使用的引擎相同,提供準確和高效能的HTML到PDF轉換。

IronPDF 是否適合正在尋找 HTML 轉 PDF 解決方案的 .NET 開發人員?

是的。IronPDF目標.NET 8、.NET 9、.NET 10、.NET Standard 2.0和.NET Framework 4.6.2或更高版本,使其適合現代和舊版.NET應用程式。

Curtis Chau
技術作家

Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。

鋼鐵支援團隊

我們每週 5 天,每天 24 小時在線上。
聊天
電子郵件
打電話給我