使用IRONPDF HTML到PDF轉換器C#開源(.NET 庫比較) Curtis Chau 更新:2026年1月18日 下載 IronPDF NuGet 下載 DLL 下載 Windows Installer 開始免費試用 LLM副本 LLM副本 將頁面複製為 Markdown 格式,用於 LLMs 在 ChatGPT 中打開 請向 ChatGPT 諮詢此頁面 在雙子座打開 請向 Gemini 詢問此頁面 在 Grok 中打開 向 Grok 詢問此頁面 打開困惑 向 Perplexity 詢問有關此頁面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 複製連結 電子郵件文章 將HTML轉換為PDF是許多軟體應用程式中的常見需求,例如生成報告、發票或將網頁儲存為PDF。 在本文中,我們將探索三個流行的開源C# HTML到PDF轉換程式庫,檢討其優勢和局限,並討論為何IronPDF在許多情況下是更好的替代方案。 HTML至PDF轉換器C#開源 1. PuppeteerSharp PuppeteerSharp是一個Puppeteer的.NET包裝器,Puppeteer是一個無頭Chromium瀏覽器。 它使開發者可以利用Chromium渲染引擎將HTML文件轉換為PDF。 PuppeteerSharp提供對渲染過程的精確控制。 這裡是一個示例: using PuppeteerSharp; using System.Threading.Tasks; class Program { static async Task Main(string[] args) { // Download Chromium to ensure compatibility with PuppeteerSharp await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultChromiumRevision); // Launch a headless instance of Chromium browser using (var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true })) { // Open a new browser page var page = await browser.NewPageAsync(); // Set the HTML content for the page await page.SetContentAsync("<html><body><h1>Hello, PuppeteerSharp!</h1></body></html>"); // Generate a PDF from the rendered HTML content await page.PdfAsync("output.pdf"); Console.WriteLine("PDF Generated Successfully!"); } } } using PuppeteerSharp; using System.Threading.Tasks; class Program { static async Task Main(string[] args) { // Download Chromium to ensure compatibility with PuppeteerSharp await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultChromiumRevision); // Launch a headless instance of Chromium browser using (var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true })) { // Open a new browser page var page = await browser.NewPageAsync(); // Set the HTML content for the page await page.SetContentAsync("<html><body><h1>Hello, PuppeteerSharp!</h1></body></html>"); // Generate a PDF from the rendered HTML content await page.PdfAsync("output.pdf"); Console.WriteLine("PDF Generated Successfully!"); } } } $vbLabelText $csharpLabel 代碼解釋 下載Chromium: PuppeteerSharp會自動下載所需的Chromium版本以確保相容性。 啟動瀏覽器: 使用Puppeteer.LaunchAsync()啟動Chromium的無頭實例。 設置HTML內容: 使用page.SetContentAsync()將所需的HTML載入瀏覽器頁面。 生成PDF: 使用page.PdfAsync()方法生成渲染內容的PDF。 結果是一個高品質的PDF (output.pdf),可以準確複製HTML結構和設計。 優點 高保真渲染:支持現代網頁技術,包括高級CSS和JavaScript。 自動化功能: 除了PDF,PuppeteerSharp還可以自動化網頁瀏覽、測試和資料提取。 積極開發: PuppeteerSharp持續維護並定期更新。 缺點 文件大小大: 需要下載並捆綁Chromium瀏覽器,增加部署大小。 資源密集:運行瀏覽器實例可能會對系統資源造成大的負擔,特別是針對大型應用程序。 有限的PDF特定功能:PuppeteerSharp專注於渲染而非增強PDF(例如,添加頁眉或頁腳)。 2. PdfSharp PdfSharp是一個功能強大的開源程式庫,用於在C#中創建和操作PDF文件。 儘管它不直接支持HTML渲染,但它在為開發者提供工具以編程方式生成和編輯PDF文件方面表現優異。 PdfSharp的主要功能 PDF創建: PdfSharp允許開發者從頭定義頁面大小、添加文本、形狀、圖像等來生成新的PDF文件。 操作現有的PDF:您可以修改現有的PDF文件,例如合併、拆分或提取內容。 繪圖功能: PdfSharp提供強大的圖形功能,使用XGraphics類向PDF文件添加自定義設計。 輕量化:它是一個輕量化的程式庫,非常適合簡單且快速為優先項的項目。 using PdfSharp.Pdf; using PdfSharp.Drawing; using HtmlAgilityPack; class Program { static void Main(string[] args) { // Example HTML content string htmlContent = "<html><body><h1>Hello, PdfSharp!</h1><p>This is an example of HTML to PDF.</p></body></html>"; // Parse HTML using HtmlAgilityPack (You need to add HtmlAgilityPack via NuGet) var htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(htmlContent); // Create a new PDF document PdfDocument pdfDocument = new PdfDocument { Info = { Title = "HTML to PDF Example" } }; // Add a new page to the document PdfPage page = pdfDocument.AddPage(); XGraphics gfx = XGraphics.FromPdfPage(page); XFont titleFont = new XFont("Arial", 20, XFontStyle.Bold); XFont textFont = new XFont("Arial", 12, XFontStyle.Regular); // Draw the parsed HTML content int yPosition = 50; // Starting Y position foreach (var node in htmlDoc.DocumentNode.SelectNodes("//h1 | //p")) { if (node.Name == "h1") { gfx.DrawString(node.InnerText, titleFont, XBrushes.Black, new XRect(50, yPosition, page.Width - 100, page.Height - 100), XStringFormats.TopLeft); yPosition += 30; // Adjust spacing } else if (node.Name == "p") { gfx.DrawString(node.InnerText, textFont, XBrushes.Black, new XRect(50, yPosition, page.Width - 100, page.Height - 100), XStringFormats.TopLeft); yPosition += 20; // Adjust spacing } } // Save the PDF document string outputFilePath = "HtmlToPdf.pdf"; pdfDocument.Save(outputFilePath); System.Console.WriteLine($"PDF file created: {outputFilePath}"); } } using PdfSharp.Pdf; using PdfSharp.Drawing; using HtmlAgilityPack; class Program { static void Main(string[] args) { // Example HTML content string htmlContent = "<html><body><h1>Hello, PdfSharp!</h1><p>This is an example of HTML to PDF.</p></body></html>"; // Parse HTML using HtmlAgilityPack (You need to add HtmlAgilityPack via NuGet) var htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(htmlContent); // Create a new PDF document PdfDocument pdfDocument = new PdfDocument { Info = { Title = "HTML to PDF Example" } }; // Add a new page to the document PdfPage page = pdfDocument.AddPage(); XGraphics gfx = XGraphics.FromPdfPage(page); XFont titleFont = new XFont("Arial", 20, XFontStyle.Bold); XFont textFont = new XFont("Arial", 12, XFontStyle.Regular); // Draw the parsed HTML content int yPosition = 50; // Starting Y position foreach (var node in htmlDoc.DocumentNode.SelectNodes("//h1 | //p")) { if (node.Name == "h1") { gfx.DrawString(node.InnerText, titleFont, XBrushes.Black, new XRect(50, yPosition, page.Width - 100, page.Height - 100), XStringFormats.TopLeft); yPosition += 30; // Adjust spacing } else if (node.Name == "p") { gfx.DrawString(node.InnerText, textFont, XBrushes.Black, new XRect(50, yPosition, page.Width - 100, page.Height - 100), XStringFormats.TopLeft); yPosition += 20; // Adjust spacing } } // Save the PDF document string outputFilePath = "HtmlToPdf.pdf"; pdfDocument.Save(outputFilePath); System.Console.WriteLine($"PDF file created: {outputFilePath}"); } } $vbLabelText $csharpLabel 代碼解釋 HTML解析:示例中使用HtmlAgilityPack(一個用於解析和操作HTML的開源程式庫)從<p>標籤中提取文本內容。 繪製內容: PdfSharp的XGraphics類用於將解析的HTML內容作為文本呈現在PDF頁面上。 限制:這種方法適用於簡單的HTML結構,但不會處理複雜的佈局、樣式或JavaScript。 PdfSharp的優點和缺點 優點 輕量且易於使用: PdfSharp直觀且簡單,對於首次使用PDF生成的開發者非常理想。 開源且免費:無需授權費用,並且可以自訂源代碼。 自定義繪圖:提供從頭開始創建具有自定義設計的PDF的優秀功能。 缺點 無HTML到PF轉換: PdfSharp本身不原生支持將HTML轉換為PDF,需要額外的程式庫來解析HTML。 對現代功能的支持有限:不提供高級功能如互動式PDF、數位簽名或註釋。 性能限制:可能不如專業程式庫對大型或企業應用程式那樣優化。 3. Pdfium.NET SDK Pdfium.NET是基於開源PDFium專案而設計的全面程式庫,旨在於.NET應用程式中查看、編輯和操作PDF文件。 它為開發者提供了強大的工具來創建、編輯和提取PDF內容,使其適合於廣泛的使用案例。 基本上是一個免費的HTML到PDF轉換程式庫。 Pdfium.NET SDK的主要功能 PDF創建與編輯: 從零生成PDF或從掃描圖像生成PDF。 通過添加文本、圖像或註釋編輯現有的PDF。 文本和圖像提取: 從PDF文件格式的文件中提取文本和圖像,以進行進一步處理。 在PDF文件中搜索特定文本。 PDF查看器控件: 在WinForms或WPF應用程式中嵌入獨立的PDF查看器。 支持縮放、捲動、書籤和文本搜索。 相容性: 可用於.NET Framework、.NET Core、.NET Standard和.NET 6+。 與Windows和macOS平臺相容。 高級功能: 合併和拆分PDF文件。 將PDF渲染為圖像以進行顯示或列印。 using Pdfium.Net.SDK; using System; class Program { static void Main(string[] args) { // Initialize Pdfium.NET SDK functionalities PdfCommon.Initialize(); // Create a new PDF document PdfDocument pdfDocument = PdfDocument.CreateNew(); // Add a page to the document (A4 size in points: 8.27 x 11.69 inches) var page = pdfDocument.Pages.InsertPageAt(pdfDocument.Pages.Count, 595, 842); // Sample HTML content to be parsed and rendered manually var htmlContent = "<h1>Hello, Pdfium.NET SDK!</h1><p>This is an example of HTML to PDF.</p>"; // Example: Manually render text since Pdfium.NET doesn't render HTML directly var font = PdfFont.CreateFont(pdfDocument, "Arial"); page.AddText(72, 750, font, 20, "Hello, Pdfium.NET SDK!"); page.AddText(72, 700, font, 14, "This is an example of HTML to PDF."); // Save the document to a file string outputFilePath = "HtmlToPdfExample.pdf"; pdfDocument.Save(outputFilePath, SaveFlags.Default); Console.WriteLine($"PDF created successfully: {outputFilePath}"); } } using Pdfium.Net.SDK; using System; class Program { static void Main(string[] args) { // Initialize Pdfium.NET SDK functionalities PdfCommon.Initialize(); // Create a new PDF document PdfDocument pdfDocument = PdfDocument.CreateNew(); // Add a page to the document (A4 size in points: 8.27 x 11.69 inches) var page = pdfDocument.Pages.InsertPageAt(pdfDocument.Pages.Count, 595, 842); // Sample HTML content to be parsed and rendered manually var htmlContent = "<h1>Hello, Pdfium.NET SDK!</h1><p>This is an example of HTML to PDF.</p>"; // Example: Manually render text since Pdfium.NET doesn't render HTML directly var font = PdfFont.CreateFont(pdfDocument, "Arial"); page.AddText(72, 750, font, 20, "Hello, Pdfium.NET SDK!"); page.AddText(72, 700, font, 14, "This is an example of HTML to PDF."); // Save the document to a file string outputFilePath = "HtmlToPdfExample.pdf"; pdfDocument.Save(outputFilePath, SaveFlags.Default); Console.WriteLine($"PDF created successfully: {outputFilePath}"); } } $vbLabelText $csharpLabel 程式碼說明 SDK初始化: PdfCommon.Initialize()方法初始化Pdfium.NET功能。 創建PDF: 使用PdfDocument.CreateNew()創建新PDF文件。 添加頁面: 根據指定的尺寸(例如A4大小)將頁面插入PDF。 渲染HTML內容: 由於Pdfium.NET SDK不原生支持HTML渲染,您需要手動解析和渲染HTML元素作為文本、形狀或圖像。 儲存PDF: 文件使用Save()方法儲存到文件路徑。 優點 允許對PDF創建和編輯的充分控制。 在繪圖和添加文本、圖像和形狀方面靈活。 在桌面應用程式中查看和操控PDF的強大功能。 缺點 不直接將HTML轉換為PDF。 手動解析和渲染HTML可能複雜且耗時。 最適合專注於PDF編輯和操作而非HTML轉換的應用程式。 介紹IronPDF IronPDF是一個專業級程式庫,專為.NET開發者設計,以輕鬆將HTML內容轉換為高品質的PDF。 以其可靠性、高級功能和易用性著稱,IronPDF簡化了開發過程,同時提供精確的渲染和強大的功能。 以下是IronPDF的優勢: 主要功能 直接HTML到PDF轉換: 使用IronPDF直接使用HTML內容創建PDF文件,其中包括CSS和JavaScript,轉換為完整格式的PDF。 只需幾行代碼,開發者即可生成來自網頁、原始HTML字串或本地HTML文件的PDF。 現代渲染能力: 支持最新的網頁標準,IronPDF確保將複雜的佈局、樣式和互動元素準確渲染,將HTML頁面轉換為PDF。 高級PDF功能: IronPDF提供廣泛自訂選項,例如添加頁眉、頁腳、水印、註釋和書籤。 它還支持合併、拆分和編輯現有的PDF。 性能和可擴展性: 為小規模應用程式和企業環境進行優化,IronPDF為任意大小的項目提供快速、可靠的性能。 易於整合: 為.NET Framework和.NET Core設計,IronPDF與C#應用程式順利整合,為開發者提供簡單的設置過程和全面的文件。 為何選擇IronPDF? IronPDF因其功能組合、開發人員支援和性能在眾多解決方案中脫穎而出。 與常常需要大量配置或外部依賴的開源替代品不同,IronPDF是一個獨立的解决方案,簡化了開發而不犧牲功能。 無論是用於生成發票、報告或存檔網頁內容,IronPDF均能夠授權開發者快速而高效地達成專業級結果。 IronPDF對於重視穩定性、可擴展性和易用性的開發者來說,都是一個實際選擇。 如何使用IronPDF將HTML轉換為PDF using IronPdf; class Program { static void Main() { // Specify license key IronPdf.License.LicenseKey = "Your Key"; // Create a new HtmlToPdf object using ChromePdfRenderer var Renderer = new ChromePdfRenderer(); // Define the HTML string to be converted string htmlContent = "<html><body><h1>IronPDF: Better than Open source</h1></body></html>"; // Convert the HTML string to a PDF document var document = Renderer.RenderHtmlAsPdf(htmlContent); // Save the PDF document to a file document.SaveAs("html2Pdf.pdf"); Console.WriteLine("PDF generated and saved successfully!"); } } using IronPdf; class Program { static void Main() { // Specify license key IronPdf.License.LicenseKey = "Your Key"; // Create a new HtmlToPdf object using ChromePdfRenderer var Renderer = new ChromePdfRenderer(); // Define the HTML string to be converted string htmlContent = "<html><body><h1>IronPDF: Better than Open source</h1></body></html>"; // Convert the HTML string to a PDF document var document = Renderer.RenderHtmlAsPdf(htmlContent); // Save the PDF document to a file document.SaveAs("html2Pdf.pdf"); Console.WriteLine("PDF generated and saved successfully!"); } } $vbLabelText $csharpLabel 程式片段解釋 授權金鑰設置: 程式開始通過設定IronPDF授權金鑰,這是使用該程式庫完整功能所需的。 創建渲染器: 一個ChromePdfRenderer實例被初始化。 該組件負責將HTML內容轉換為PDF文件,充當原始HTML和最終輸出之間的橋樑。 定義HTML內容: 創建一個字串變量htmlContent來存儲將要轉換為PDF的HTML結構。 在這個例子中,它包含了一個簡單的標題。 將HTML轉換為PDF: 在RenderHtmlAsPdf()方法,將HTML字串作為輸入。 此功能處理內容並將其轉化為PDF文件。 保存PDF: 最後,通過使用SaveAs()方法將生成的PDF保存為名為"html2Pdf.pdf"的文件,將其儲存在磁碟上以供將來訪問。 輸出PDF 授權信息(提供試用) IronPDF需要一個有效的授權金鑰才能使用完整功能。 您可以從官方網站獲取試用授權。在使用IronPDF程式庫之前,請如下設置授權金鑰: IronPdf.License.LicenseKey = "your key"; IronPdf.License.LicenseKey = "your key"; $vbLabelText $csharpLabel 此確保程式庫的運行不受限制。 結論 對於需要精確將HTML呈現為PDF的開發者來說,PuppeteerSharp是一個出色的選擇,特別是在處理複雜網頁時。 然而,對於需要高級PDF特定功能、性能優化和易整合的應用程式,專業工具如IronPDF通常是更好的選擇。 PdfSharp對於輕量化且需要程序生成和操作PDF的項目是一個很好的選擇,特別是針對簡單需求的項目。 然而,如果您的應用程式需要將HTML轉換為PDF或高級PDF功能,IronPDF提供了一個更高效且功能豐富的解決方案。 雖然Pdfium.NET SDK是一個強大的PDF操作工具,IronPDF提供了直接HTML到PDF轉換的原生支持,包括渲染現代HTML、CSS和JavaScript。 IronPDF具有內建HtmlToPdf.RenderHtmlAsPdf()等方法,簡化工作流程,使開發速度更快且更高效。 無論是用於生成發票、報告或存檔網頁內容,IronPDF均能夠授權開發者快速而高效地達成專業級結果。 IronPDF對於重視穩定性、可擴展性和易用性的開發者來說是實際選擇。 常見問題解答 怎樣在 C# 中將 HTML 轉換為 PDF? 您可以使用 IronPDF 的 RenderHtmlAsPdf 方法將 HTML 字符串轉換為 PDF。此外,IronPDF 支持使用 RenderHtmlFileAsPdf 方法將 HTML 文件直接轉換為 PDF。 使用 IronPDF 相對於開源庫在 PDF 轉換中有哪些優勢? IronPDF 提供直接的 HTML 到 PDF 轉換,支持現代的 Web 標準、高級 PDF 功能,並易於與 .NET 應用集成。相較於 PuppeteerSharp、PdfSharp 和 Pdfium.NET SDK 等開源替代方案,它提供了一個專業的解決方案。 IronPDF 在 PDF 轉換過程中能處理複雜的 HTML、CSS 和 JavaScript 嗎? 是的,IronPDF 支持最新的 Web 標準,確保在 HTML 到 PDF 轉換過程中準確渲染複雜的佈局、樣式和交互元素。 使用 IronPDF 進行 HTML 到 PDF 轉換需要什麼? 要使用 IronPDF,需要有效的許可證密鑰。開發者可以從官方網站獲取試用許可證以解鎖全部功能。 IronPDF 為何成為開發者的實際選擇? IronPDF 因其可靠性、擴展性、易用性和強大的 HTML 到 PDF 轉換功能而實用。它非常適合高效和有效地生成專業級的 PDF。 使用 PuppeteerSharp 進行 PDF 生成有哪些限制? PuppeteerSharp 需要下載和捆綁 Chromium 瀏覽器,這會增加文件大小並可能占用大量資源。它更專注於渲染而不是通過附加功能增強 PDF。 在 HTML 到 PDF 轉換方面,Pdfium.NET SDK 與 IronPDF 有何不同? Pdfium.NET SDK 本身不支持 HTML 到 PDF 轉換,需要手動渲染 HTML 元素。相比之下,IronPDF 提供內置的方法進行直接轉換,簡化了過程。 PdfSharp 適合渲染複雜的 HTML 結構到 PDF 嗎? PdfSharp 不支持原生的 HTML 到 PDF 轉換,可能在處理複雜的佈局、樣式或 JavaScript 時遇到困難,需要額外的庫進行 HTML 分析。 IronPDF 為 PDF 操作提供哪些功能? IronPDF 提供創建、編輯和提取 PDF 內容的工具。它支持直接 HTML 到 PDF 轉換、文本/圖像提取以及在應用中嵌入 PDF 查看器。 IronPDF是否兼容.NET 10,並且在.NET 10專案中使用時有什麼優勢? 是的—IronPDF完全兼容.NET 10。它支持.NET 10專案而不需要特殊手段,並利用運行時改進如數組接口方法虛化的減少、增強性能和減少記憶體使用。 IronPDF帶來了哪些針對於.NET 10中的HTML到PDF轉換的新增強? 在.NET 10中,IronPDF提供了“零天”支持,最新版本帶來了與新運行時的完美兼容。開發者獲得了更快的啟動時間、更好的記憶體使用率以及由.NET 10渲染和JIT引擎改進帶來的渲染性能提升。 Curtis Chau 立即與工程團隊聊天 技術作家 Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。 相關文章 更新2026年3月1日 如何在.NET中使用IronPDF創建PDF檔案(C#教程) 發現用於創建C# PDF文件的有效方法,提升您的編碼技能並簡化您的項目。立即閱讀文章! 閱讀更多 更新2026年2月27日 如何在C#中合併PDF文件 使用 IronPDF 合併 PDF 文件。學習如何使用簡單的 VB.NET 程式碼將多個 PDF 文件合併成一個文檔。包含逐步範例。 閱讀更多 更新2026年3月1日 C# PDFWriter教程,適用於.NET 10開發者 通過這個面向開發人員的逐步指南,學習如何使用C# PDFWriter高效創建PDF。閱讀本文以提高您的技能! 閱讀更多 IronPDF實時編碼回顧:真實世界.NET專案中的像素完美PDF如何在C#中不使用庫將HTML...