使用 IRONPDF

HTML 轉 PDF 轉換器 C# 開源 (.NET 函式庫比較)

Chipego
奇佩戈·卡林达
2025年4月3日
分享:

介紹

將 HTML 轉換為 PDF 是許多軟體應用程式中的常見需求,例如生成報告、發票或將網頁保存為 PDF。 在本文中,我們將探索三個用於將 HTML 轉換為 PDF 的 C# 開源庫,審視它們的優勢和局限性,並討論為什麼IronPDF 在許多情況下是更好的選擇。

HTML 到 PDF 轉換器 c# 開源

PuppeteerSharp

HTML 轉 PDF 轉換器 C# 開源 (.NET 函式庫比較):圖 1

從Pixabay添加上傳

或將圖片拖放到此處

新增圖片替代文字

PuppeteerSharp 是 Puppeteer 的 .NET 包裝器,一種無頭 Chromium 瀏覽器。 它使開發人員能夠利用Chromium渲染引擎將HTML文檔轉換為PDF。

PuppeteerSharp 提供對渲染過程的精確控制。 這是個例子:

using PuppeteerSharp;
using System.Threading.Tasks;
class Program
{
    static async Task Main(string[] args)
    {
        // Download Chromium
        await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultChromiumRevision);
        // Launch Browser
        using (var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true }))
        {
            // Open a new page
            var page = await browser.NewPageAsync();
            // Set HTML content
            await page.SetContentAsync("<html><body><h1>Hello, PuppeteerSharp!</h1></body></html>");
            // Generate PDF
            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
        await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultChromiumRevision);
        // Launch Browser
        using (var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true }))
        {
            // Open a new page
            var page = await browser.NewPageAsync();
            // Set HTML content
            await page.SetContentAsync("<html><body><h1>Hello, PuppeteerSharp!</h1></body></html>");
            // Generate PDF
            await page.PdfAsync("output.pdf");
            Console.WriteLine("PDF Generated Successfully!");
        }
    }
}

程式碼說明

  1. 下載 Chromium: PuppeteerSharp 自動下載所需的 Chromium 版本以確保相容性。

  2. 啟動瀏覽器:使用 Puppeteer.LaunchAsync() 啟動 Chromium 無頭實例。

  3. 設置 HTML 內容:使用 page.SetContentAsync() 將所需的 HTML 加載到瀏覽器頁面中。

  4. 生成 PDF:使用 page.PdfAsync() 方法來生成渲染內容的 PDF。

    結果是一個高品質的 PDF(output.pdf),可以準確複製 HTML 結構和設計。

優點

  • 高保真渲染:支持現代網頁技術,包括高級 CSS 和 JavaScript。
  • 自動化功能: 除了PDF,PuppeteerSharp還可以自動化網頁瀏覽、測試和數據提取。
  • 積極開發:PuppeteerSharp 由積極維護並定期更新。

缺點

  • 大檔案大小:需要下載和捆綁Chromium瀏覽器,增加部署大小。
  • 資源密集型:執行瀏覽器實例可能會對系統資源造成負擔,特別是對於大規模應用程式而言。
  • 有限的 PDF 專屬功能:PuppeteerSharp 專注於渲染而不是增強 PDF(例如,添加頁眉或頁腳)。

2. PdfSharp

HTML 轉 PDF 轉換器 C# 開源 (.NET 庫比較):圖2

從Pixabay添加上傳

或將圖片拖放到此處

新增圖片替代文字

PdfSharp 是一個強大的開源庫,用於在 C# 中創建和操作 PDF 文件。 雖然它不直接支持HTML渲染,但在為開發人員提供生成和程式化編輯PDF文件的工具方面表現出色。

PdfSharp 的主要功能

  1. PDF 創建: PdfSharp 允許開發人員通過定義頁面大小、添加文本、形狀、圖像等從頭生成新的 PDF 文件。

  2. 操作現有PDF:您可以修改現有的PDF文件,例如合併、拆分或提取內容。

  3. 繪圖功能: PdfSharp 提供強大的圖形功能,使用 XGraphics 類別向 PDF 文件添加自訂設計。

  4. 輕量級:這是一個輕量級的庫,特別適合以簡單和速度為優先的專案。
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();
        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();
        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}");
    }
}

程式碼說明

  1. HTML 解析:此範例使用 HtmlAgilityPack(一個用於解析和操作 HTML 的開源庫)從

    標籤中提取文字內容。

  2. 繪圖內容:PdfSharp 的 XGraphics 類用於將解析的 HTML 內容呈現為 PDF 頁面上的文本。

  3. 限制:此方法適用於簡單的 HTML 結構,但無法處理複雜的佈局、樣式或 JavaScript。

PdfSharp 的優缺點

優點

  • 輕量且易於使用:PdfSharp 直觀且簡單,非常適合剛開始進行 PDF 生成的開發人員。
  • 開源和免費:無需授權費用,並且源代碼可供自訂。
  • 自定義繪圖: 提供卓越的功能,可從零開始創建具有自定義設計的 PDF。

缺點

  • 無法將 HTML 轉換成 PDF:PdfSharp 本身不支援將 HTML 渲染為 PDF,需要額外的庫來解析 HTML。
  • 對現代功能的有限支援:不提供如互動式 PDF、數位簽名或註釋等進階功能。
  • 性能限制: 可能沒有針對大型或企業應用程式的專業程式庫進行優化。

Pdfium.NET SDK

HTML to PDF 轉換器 C# 開源 (.NET 程式庫比較):圖 3

從Pixabay添加上傳

或將圖片拖放到此處

新增圖片替代文字

Pdfium.NET 是一個基於開源 PDFium 項目的綜合性庫,專為 .NET 應用程序中的查看、編輯和操作 PDF 文件而設計。 它為開發人員提供了強大的工具,用於創建、編輯和提取 PDF 的內容,使其適用於各種用例。 這基本上是一個免費的HTML轉PDF轉換器庫。

Pdfium.NET SDK 的主要功能

  1. PDF 建立與編輯:

    • 從頭生成 PDF 或從掃描的圖像生成 PDF。
    • 透過新增文本、圖片或註解來編輯現有的 PDF。
  2. 文字和圖像提取:

    • 從 PDF 文件格式中提取文字和圖片以進行進一步處理。
    • 在 PDF 文件中搜索特定文本。
  3. PDF 檢視器控制項:

    • 在 WinForms 或 WPF 應用程式中嵌入獨立的 PDF 檢視器。
    • 支援縮放、捲動、書籤和文字搜尋。
  4. 相容性:

    • 適用於 .NET Framework、.NET Core、.NET Standard 和 .NET 6+。
    • 兼容 Windows 和 macOS 平台。
  5. 進階功能:

    • 合併和分割 PDF 文件。
    • 將 PDF 渲染為用於顯示或列印的圖像。
using Pdfium.Net.SDK;
using System;
class Program
{
    static void Main(string[] args)
    {
        // Initialize Pdfium.NET SDK
        PdfCommon.Initialize();
        // Create a new PDF document
        PdfDocument pdfDocument = PdfDocument.CreateNew();
        // Add a page to the document
        var page = pdfDocument.Pages.InsertPageAt(pdfDocument.Pages.Count, 595, 842); // A4 size in points (8.27 x 11.69 inches)
        // Add HTML content (example: parsed manually)
        var htmlContent = "<h1>Hello, Pdfium.NET SDK!</h1><p>This is an example of HTML to PDF.</p>";
        // Example: Rendering text manually (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
        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
        PdfCommon.Initialize();
        // Create a new PDF document
        PdfDocument pdfDocument = PdfDocument.CreateNew();
        // Add a page to the document
        var page = pdfDocument.Pages.InsertPageAt(pdfDocument.Pages.Count, 595, 842); // A4 size in points (8.27 x 11.69 inches)
        // Add HTML content (example: parsed manually)
        var htmlContent = "<h1>Hello, Pdfium.NET SDK!</h1><p>This is an example of HTML to PDF.</p>";
        // Example: Rendering text manually (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
        string outputFilePath = "HtmlToPdfExample.pdf";
        pdfDocument.Save(outputFilePath, SaveFlags.Default);
        Console.WriteLine($"PDF created successfully: {outputFilePath}");
    }
}

程式碼說明

  1. SDK 初始化:PdfCommon.Initialize() 方法初始化 Pdfium.NET 功能。

  2. 創建 PDF: 使用 PdfDocument.CreateNew() 創建新的 PDF 文件。

  3. 新增頁面:頁面會按指定的尺寸(例如 A4 大小)插入到 PDF 中。

  4. 渲染 HTML 內容:由於 Pdfium.NET SDK 本身不支援 HTML 渲染,您需要手動解析並將 HTML 元素渲染為文字、圖形或圖像。

  5. 保存 PDF:文件通過 Save() 方法保存到文件路徑。

優點

  • 允許完全控制 PDF 的創建和編輯。
  • 靈活於繪圖及添加文字、圖像和形狀。
  • 強大的功能用於在桌面應用程式中查看和操作 PDF。

缺點

  • 不直接將HTML轉換為PDF。
  • 手動解析和呈現 HTML 可能既複雜又耗時。
  • 最適合專注於 PDF 編輯和操作而非 HTML 轉換的應用程式。

介紹 IronPDF

HTML 到 PDF 轉換器 C# 開源工具 (.NET 庫比較):圖 4

從Pixabay添加上傳

或將圖片拖放到此處

新增圖片替代文字

IronPDF 是專為 .NET 開發人員設計的專業級函式庫,可輕鬆地將 HTML 內容轉換為高質量的 PDF。 因其可靠性、高級功能和易用性而著稱,IronPDF 在提供精確渲染和強大功能的同時,簡化了開發過程。 以下是 IronPDF 成為傑出解決方案的原因:

主要功能

  1. 直接將 HTML 轉換為 PDF:透過 IronPDF 使用 HTML 內容(包括 CSS 和 JavaScript)直接創建 PDF 文件,生成格式完整的 PDF。 只需幾行代碼,開發者就可以從網頁、原始 HTML 字串或本地 HTML 檔案生成 PDF。

  2. 現代渲染能力: 支援最新的網頁標準,IronPDF 確保準確渲染複雜的佈局、樣式和互動元素,以將 HTML 頁面轉換為 PDF。

  3. 進階 PDF 功能:IronPDF 提供廣泛的自訂選項,例如添加頁首、頁尾、浮水印、註解和書籤。 它還支持合併、拆分和編輯現有的 PDF。 拆分 PDF 文件,

  4. 效能及擴展性:IronPDF 經過優化,適用於小型應用程式和企業環境,為任何規模的專案提供快速、可靠的效能。

  5. 整合的便利性:專為 .NET Framework 和 .NET Core 設計,IronPDF 能順利地與 C# 應用整合,為開發人員提供簡單的設置過程和全面的文件說明。

為什麼選擇IronPDF?

IronPDF 因其功能組合、開發者支援和性能而在其他解決方案中脫穎而出。 與通常需要大量配置或外部依賴的開源替代方案不同,IronPDF 是一個自包含解決方案,簡化了開發過程而不犧牲功能性。 無論是生成發票、報告,還是存檔網頁內容,IronPDF 為開發人員提供了他們所需的工具,以快速高效地達成專業級成果。

IronPDF 是一個對於重視可靠性、可擴展性和易用性的開發者來說,將 HTML 轉換為 PDF 工作流程的實用選擇

如何使用 IronPDF 將 HTML 轉換為 PDF

class Program
{
    static void Main()
    {
        // Specify license key
        License.LicenseKey = "Yoour Key";
        // Create a new HtmlToPdf object
        var Renderer = new ChromePdfRenderer();
        // Define the HTML string/ HTML code to be converted, can use html document
        string htmlContent = "<html><body><h1>IronPDF: Beter than Open source</h1></body></html>";
        // Convert pdf simple HTML string to a PDF document
        var document = Renderer.RenderHtmlAsPdf(htmlContent);
        // Save the PDF output document to a file
        document.SaveAs("html2Pdf.pdf"); // path to pdf file generated
    }
}
class Program
{
    static void Main()
    {
        // Specify license key
        License.LicenseKey = "Yoour Key";
        // Create a new HtmlToPdf object
        var Renderer = new ChromePdfRenderer();
        // Define the HTML string/ HTML code to be converted, can use html document
        string htmlContent = "<html><body><h1>IronPDF: Beter than Open source</h1></body></html>";
        // Convert pdf simple HTML string to a PDF document
        var document = Renderer.RenderHtmlAsPdf(htmlContent);
        // Save the PDF output document to a file
        document.SaveAs("html2Pdf.pdf"); // path to pdf file generated
    }
}

程式碼片段說明

1. 許可金鑰設置

程式開始時設置IronPDF license key,這是解鎖程式庫完整功能所需的。

2. 建立渲染器

初始化一個 ChromePdfRenderer 實例。 此元件負責將 HTML 內容轉換為PDF 文件,作為原 HTML 與最終輸出之間的橋樑。

3. 定義 HTML 內容

一個字串變數 htmlContent 被創建來存儲將轉換為 PDF 的HTML 結構。 在這個範例中,它包含一個簡單的標題。

4. 將 HTML 轉換為 PDF

在 ChromePdfRenderer 實例上調用 RenderHtmlAsPdf() 方法,將 HTML 字串作為輸入。 此函式處理內容並將其轉換為PDF 文件

5. 儲存 PDF

最後,生成的 PDF 使用 SaveAs() 方法保存到名為 "html2Pdf.pdf" 的文件中,並存儲在磁碟上以供日後訪問。

輸出 PDF

HTML 到 PDF 轉換器 C# 開源 (.NET 函式庫比較): 圖 5

從Pixabay添加上傳

或將圖片拖放到此處

新增圖片替代文字

授權資訊(提供試用)

IronPDF 需要一個有效的授權金鑰才能完全運行。 您可以從官方網站獲取試用許可證。在使用IronPDF庫之前,請按照以下方式設置許可證密鑰:

IronPdf.License.LicenseKey = "your key";
IronPdf.License.LicenseKey = "your key";

這確保了該程式庫運行沒有限制。

結論

PuppeteerSharp 是需要精確將 HTML 渲染為 PDF 的開發人員的絕佳選擇,尤其是在處理複雜的網頁時。 然而,對於需要高級 PDF 特定功能、性能優化和易於集成的應用程式,專業工具如IronPDF通常是更好的選擇。

PdfSharp 是一個輕量化的程式化 PDF 創建和操作的極佳選擇,特別適合具有簡單需求的項目。 然而,如果您的應用程序需要將 HTML 轉換為 PDF 或進階的 PDF 功能,IronPDF 提供更高效且功能豐富的解決方案。

雖然 Pdfium.NET SDK 是一個強大的 PDF 操作工具,IronPDF則提供了對直接 HTML 到 PDF 轉換的原生支援,包括渲染現代 HTML、CSS 和 JavaScript。 IronPDF 透過內建方法如 HtmlToPdf.RenderHtmlAsPdf() 簡化工作流程,使其對開發人員來說更快捷且更高效。

無論是生成發票、報告,還是存檔網頁內容,IronPDF 為開發人員提供了他們所需的工具,以快速高效地達成專業級成果。

IronPDF 是一個實用的選擇,適合那些重視可靠性、可擴展性和易用性的開發人員,用於其 HTML 到 PDF 的工作流程。

Chipego
奇佩戈·卡林达
軟體工程師
Chipego 擁有天生的傾聽技能,這幫助他理解客戶問題,並提供智能解決方案。他在獲得信息技術理學學士學位後,于 2023 年加入 Iron Software 團隊。IronPDF 和 IronOCR 是 Chipego 專注的兩個產品,但隨著他每天找到新的方法來支持客戶,他對所有產品的了解也在不斷增長。他喜歡在 Iron Software 的協作生活,公司內的團隊成員從各自不同的經歷中共同努力,創造出有效的創新解決方案。當 Chipego 離開辦公桌時,他常常享受讀好書或踢足球的樂趣。
下一個 >
如何使用 C# 在不使用庫的情況下將 HTML 轉換為 PDF