產品比較

PDFsharp 與 QuestPDF (C# PDF 庫深入比較)

里根普恩
里根普恩
2025年2月26日
分享:

在 .NET 中處理 PDF 文件時,開發人員常常需要比較各種函式庫,以確定哪一個最符合他們的項目需求。 .NET 生態系統中三個受歡迎的選擇是PDFsharp, QuestPDFIronPDF. 每個庫適合不同的使用場景,並提供獨特的優勢和劣勢。 在本文中,我們將深入比較這些庫,以及它們如何處理基本的 PDF 生成。這個網址幫助您做出明智的決定。

什麼是PDFsharp?

PDFsharp 是一個開源庫,旨在創建、編輯和呈現 PDF 文件。 PDFsharp 專注於簡單性和核心 PDF 功能,一直是尋求簡單 PDF 操控功能的開發人員的可靠工具。

PDFsharp 的主要特點

  • PDF 創建和編輯:生成新的 PDF 或修改現有的 PDF。
  • 圖形繪製:包括支援繪製形狀、文字和圖像。
  • 開源:在 MIT 許可下,免費使用和修改。

安裝

透過使用 NuGet 套件管理器,將 PDFsharp 安裝到您的專案中非常簡單,只需在 NuGet 套件管理器主控台中執行以下指令:

Install-Package PDFsharp
Install-Package PDFsharp

PDFsharp 代碼範例

現在,讓我們看看 PDFsharp 如何處理從給定的 URL 建立新的 PDF 文件。 由於PDFsharp本身無法處理HTML或URL到PDF的轉換,我們將需要整合一個網頁渲染引擎,例如HtmlRenderer.PdfSharp來幫助。此外,我們還需要使用HttpClient從給定的URL中獲取HTML內容。

using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using PdfSharp.Pdf;
using TheArtOfDev.HtmlRenderer.PdfSharp;
public class Program
{
    static async System.Threading.Tasks.Task Main(string[] args)
    {
        // Ensure proper encoding support
        Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
        string url = "https://www.apple.com";
        // Fetch HTML content from the URL
        using (HttpClient client = new HttpClient())
        {
            string htmlContent = await client.GetStringAsync(url);
            // Generate PDF from the fetched HTML content
            var pdf = PdfGenerator.GeneratePdf(htmlContent, PdfSharp.PageSize.A4);
            pdf.Save("output.pdf");
            Console.WriteLine("PDF created successfully as 'output.pdf'.");
        }
    }
}
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using PdfSharp.Pdf;
using TheArtOfDev.HtmlRenderer.PdfSharp;
public class Program
{
    static async System.Threading.Tasks.Task Main(string[] args)
    {
        // Ensure proper encoding support
        Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
        string url = "https://www.apple.com";
        // Fetch HTML content from the URL
        using (HttpClient client = new HttpClient())
        {
            string htmlContent = await client.GetStringAsync(url);
            // Generate PDF from the fetched HTML content
            var pdf = PdfGenerator.GeneratePdf(htmlContent, PdfSharp.PageSize.A4);
            pdf.Save("output.pdf");
            Console.WriteLine("PDF created successfully as 'output.pdf'.");
        }
    }
}

輸出 PDF 文件

PDFsharp 與 QuestPDF (C# PDF 庫深入比較): 圖 1

正如您所見,雖然PDFsharp可以用來將HTML內容和網頁轉換為PDF文件,但它需要額外的庫的幫助,且無法保留原始網站上的CSS和格式。雖然PDFsharp是個不錯的免費PDF開發庫,但它確實缺乏一些付費庫(如IronPDF)中的更高級功能。

什麼是QuestPDF?

QuestPDF 是一個現代的開源庫,專注於使用流暢的 API 生成視覺上吸引人的 PDF。 其對文件佈局和渲染的創新方法使其成為需要動態和複雜設計的應用程式的有力競爭者。

QuestPDF 的主要功能

  • Fluent API:提供一種宣告式的方法來定義文件佈局。
  • 現代佈局系統:受 CSS 啟發,它支持網格、組件和靈活的佈局結構。 使用這些樣式選項來處理 PDF 檔案。
  • 高效能:優化渲染大型和複雜文件的速度。

安裝

再次感謝這個庫可以作為 NuGet 套件使用,安裝它是一個簡單明瞭的過程,只需在 NuGet 控制台中運行一行命令即可:

Install-Package QuestPDF
Install-Package QuestPDF

QuestPDF 代碼範例

現在是時候考慮QuestPDF將如何將我們的示例URL轉換為PDF格式了。 雖然 QuestPDF 並不原生支持 URL 到 PDF 的轉換,但您可以使用 HTTP 客戶端來獲取 HTML 內容,並使用 QuestPDF 的流暢 API 將其渲染為 PDF。

using System;
using System.Net.Http;
using System.Threading.Tasks;
using HtmlAgilityPack;
using QuestPDF.Fluent;
using QuestPDF.Helpers;
using QuestPDF.Infrastructure;
public class Program
{
    static async System.Threading.Tasks.Task Main(string[] args)
    {
        QuestPDF.Settings.License = LicenseType.Community;
        string url = "https://www.apple.com";
        // Fetch HTML content from the URL
        using (HttpClient client = new HttpClient())
        {
            string htmlContent = await client.GetStringAsync(url);
            // Parse the HTML content using HtmlAgilityPack
            var htmlDoc = new HtmlDocument();
            htmlDoc.LoadHtml(htmlContent);
            // Extract meaningful content (e.g., text inside <body>)
            var bodyContent = htmlDoc.DocumentNode.SelectSingleNode("//body")?.InnerText ?? "No content found";
            // Generate PDF using QuestPDF
            Document.Create(container =>
            {
                container.Page(page =>
                {
                    page.Size(PageSizes.A4);
                    page.Margin(20);
                    page.Content().Text(bodyContent);
                });
            }).GeneratePdf("output.pdf");
            Console.WriteLine("PDF created successfully as 'output.pdf'.");
        }
    }
}
using System;
using System.Net.Http;
using System.Threading.Tasks;
using HtmlAgilityPack;
using QuestPDF.Fluent;
using QuestPDF.Helpers;
using QuestPDF.Infrastructure;
public class Program
{
    static async System.Threading.Tasks.Task Main(string[] args)
    {
        QuestPDF.Settings.License = LicenseType.Community;
        string url = "https://www.apple.com";
        // Fetch HTML content from the URL
        using (HttpClient client = new HttpClient())
        {
            string htmlContent = await client.GetStringAsync(url);
            // Parse the HTML content using HtmlAgilityPack
            var htmlDoc = new HtmlDocument();
            htmlDoc.LoadHtml(htmlContent);
            // Extract meaningful content (e.g., text inside <body>)
            var bodyContent = htmlDoc.DocumentNode.SelectSingleNode("//body")?.InnerText ?? "No content found";
            // Generate PDF using QuestPDF
            Document.Create(container =>
            {
                container.Page(page =>
                {
                    page.Size(PageSizes.A4);
                    page.Margin(20);
                    page.Content().Text(bodyContent);
                });
            }).GeneratePdf("output.pdf");
            Console.WriteLine("PDF created successfully as 'output.pdf'.");
        }
    }
}

輸出 PDF 文件

PDFsharp 與 QuestPDF (C# PDF 庫深入比較):圖 2

就像我們在 PDFSharp 中看到的一樣,雖然 QuestPDF 可以在外部庫如 HtmlAgilityPack 的協助下用於將 HTML 內容轉換為 PDF,但它無法保留任何 CSS 樣式和格式。 雖然 QuestPDF 是任何想從頭創建 PDF 文件的人的一個很好的選擇,但 HTML 到 PDF 的轉換並不是此庫的強項。

IronPDF:強大的 PDF 庫

IronPDF是一個為 .NET 開發人員設計的強大 PDF 庫,提供先進和全面的 PDF 功能。 它專注於 HTML-to-PDF 渲染,結合其他附加功能,如操控 PDF 文件的高級選項、加密和 PDF/A 合規性,使其成為企業級應用程式的強大選擇。

IronPDF 的主要功能

  • HTML 到 PDF:輕鬆渲染完整的網頁或HTML 字串作為PDF。
  • PDF/A 合規性:生成符合長期存取需求的文件歸檔標準.
  • 高級安全性:支持加密,密码保护,和數位簽章.
  • 編輯 PDF:修改、合併和拆分現有的 PDF 文件。
  • 跨平台:完全兼容 .NET Framework、.NET Core 和 .NET 5+。

安裝

要安裝IronPDF,請在Visual Studio中使用NuGet套件管理器:

使用 NuGet 套件管理器

  1. 在 Visual Studio 中打開您的專案。

  2. 在方案總管中右鍵點擊專案,然後選擇「管理 NuGet 套件」。

  3. 搜索 "IronPDF" 並點擊 "Install"。

    PDFsharp 與 QuestPDF(C# PDF 庫深入比較):圖3

    使用 NuGet 套件管理員主控台:

Install-Package IronPdf
Install-Package IronPdf

示例:使用IronPDF將URL轉換為PDF

IronPDF 提供一個簡單而直接的 API 用於轉換PDF的網址. 這是個例子:

using IronPdf;
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderUrlAsPdf("https://www.apple.com");
pdf.SaveAs("url.pdf");
using IronPdf;
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderUrlAsPdf("https://www.apple.com");
pdf.SaveAs("url.pdf");

輸出 PDF 文件

PDFsharp 與 QuestPDF(C# PDF 庫深入比較):圖 4

上面的程式碼範例展示了如何使用 IronPDF 只需幾行程式碼即可輕鬆將 URL 內容轉換為 PDF。 正如您所見,它不僅轉換了HTML,還轉換了CSS樣式和佈局,確保輸出PDF保持原始格式。 通過使用ChromePdfRenderer 渲染引擎,IronPDF 生成的 PDF 文件具有像素完美的質量,在轉換過程中不會丟失任何內容的原始品質。

如本文所述,IronPDF 是將 HTML 轉換為 PDF 的強大選擇,同時也適用於將其他文檔類型轉換為 PDF。 它以簡潔、易於實施的代碼塊處理高質量的轉換工作。

詳細分析

易於使用

PDFsharp 易於使用,是初學者或對 PDF 要求不高的開發人員的絕佳選擇。 其程序化的方法允許快速設置和實現任務,例如向 PDF 添加文本、形狀或圖像。 然而,它確實需要一個外部函式庫來處理 HTML 和 URL 到 PDF 的轉換任務。

另一方面,QuestPDF 提供了一種更現代的方法,具有其流暢的 API。 有網頁或用戶界面設計經驗的開發人員會覺得這很直觀,但新手在熟悉以佈局為中心的設計理念時可能會面臨一些學習曲線。 但是再次強調,它缺乏處理 HTML 到 PDF 轉換的內建工具。

IronPDF 提供了最簡單的 HTML 轉換為 PDF 的體驗以及先進的 PDF 功能。 其直觀的 API 減少了實施時間,並提供強大的文檔和示例。 IronPDF 可以將許多不同類型的文件轉換為 PDF,例如我們在本文中看到的 URL 到 PDF 示例,而且不會有任何文件質量的損失。

性能

性能是一個關鍵因素,特別是對於需要動態生成PDF的應用程式。 PDFsharp 適用於小型和簡單的文件,但在處理大規模或複雜佈局時顯得吃力。

QuestPDF 在渲染動態且視覺吸引的文件方面表現出色。 它經過優化,能以高效率處理結構化佈局。

IronPDF在性能和功能方面達到了出色的平衡,特別是對於需要HTML渲染、CSS和JavaScript支持的應用程式。 它也能輕鬆處理企業級 PDF 任務。

比較摘要

  • PDFsharp 是一個輕量級且開源的庫,非常適合用於基本的 PDF 創建和編輯任務。 它非常適合小型專案,但缺乏對現代佈局和進階功能的支持。
  • QuestPDF 以其流暢的 API 在生成動態、複雜且視覺上吸引人的 PDF 文件方面表現出色。 然而,它專注於 PDF 生成,不支持編輯現有文件。
  • IronPDF 提供最全面的功能集,包括內建的HTML轉PDF、OCR及先進的安全選項。 雖然需要商業授權,但其功能使其成為企業和專業應用程式的首選。

結論

選擇適合您 .NET 專案的 PDF 庫取決於您的具體需求。 如果您需要一個輕量、開源的工具來執行基本的 PDF 任務,PDFsharp是一個不錯的選擇。 用於創建動態且視覺吸引人的文件,QuestPDF以其現代化的方法脫穎而出。

但是,如果您需要高級功能、無縫的HTML到PDF轉換,以及企業級功能,IronPDF它所提供的。

透過了解每個庫的優勢和限制,您可以做出符合專案需求的明智決定。

里根普恩
軟體工程師
Regan 畢業於雷丁大學,擁有電子工程學士學位。在加入 Iron Software 之前,他的工作角色讓他專注於單一任務;而他在 Iron Software 工作中最喜歡的是他所能承擔的工作範圍,無論是增加銷售價值、技術支持、產品開發或市場營銷。他喜歡了解開發人員如何使用 Iron Software 庫,並利用這些知識不斷改進文檔和開發產品。
< 上一頁
探索 PDFsharp 的最佳 PDF 到圖像的替代方案
下一個 >
將頁碼添加到 PDF 的 PDFsharp 與 IronPDF(示例)