跳至頁尾內容
PDF工具

如何免費為PDF設置密碼

Full Comparison

Looking for a detailed feature-by-feature breakdown? See how IronPDF stacks up against QuestPDF on pricing, HTML support, and licensing.

View Full Comparison

在 .NET 中處理 PDF 文件時,開發者經常發現需要比較各種程式庫,以決定哪一個最適合他們的專案需求。 .NET 生態系統中三個受歡迎的選擇是 PDFSharpQuestPDFIronPDF。 每個程式庫適用於不同的使用案例,並提供獨特的優勢和弱點。 在本文中,我們將對這些程式庫進行深入比較,探討它們如何處理基本的 PDF 生成,並附上此網址,以幫助您做出明智的決定。

什麼是PDFSharp?

PDFSharp 是一個設計用來建立、編輯和渲染 PDF 文件的開源程式庫。 PDFSharp 專注於簡單性和核心 PDF 功能,對於尋找簡單 PDF 操作能力的開發者來說,是一個可靠的工具。

PDFSharp 的主要功能

  • PDF 建立和編輯:生成新的 PDFs 或修改現有的。
  • 圖形繪製:包括對繪製圖形、文字和圖像的支持。
  • 開源:基於 MIT 授權,免費使用和修改。

安裝

通過使用 NuGet 套件管理器,很容易將 PDFSharp 安裝到您的專案中。 只需在 NuGet 套件管理器控制台中運行以下行:

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 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 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'.");
        }
    }
}
Imports System
Imports System.Net.Http
Imports System.Text
Imports System.Threading.Tasks
Imports PdfSharp.Pdf
Imports TheArtOfDev.HtmlRenderer.PdfSharp

Public Class Program
	Shared Async Function Main(ByVal args() As String) As Task
		' Ensure proper encoding support
		Encoding.RegisterProvider(CodePagesEncodingProvider.Instance)

		Dim url As String = "https://www.apple.com"

		' Fetch HTML content from the URL
		Using client As New HttpClient()
			Dim htmlContent As String = Await client.GetStringAsync(url)

			' Generate PDF from the fetched HTML content
			Dim pdf = PdfGenerator.GeneratePdf(htmlContent, PdfSharp.PageSize.A4)
			pdf.Save("output.pdf")

			Console.WriteLine("PDF created successfully as 'output.pdf'.")
		End Using
	End Function
End Class
$vbLabelText   $csharpLabel

輸出 PDF 文件

PDFSharp 範例輸出

如您所見,雖然 PDFSharp 可用於將 HTML 內容和網頁轉換為 PDF 文件,但它需要額外的程式庫協助,並且無法保留原始網站上的任何 CSS 和格式。雖然是很棒的免費 PDF 開發者程式庫,但它確實缺乏一些在付費程式庫如 IronPDF 中可見的更高級的功能。

什麼是 QuestPDF?

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

QuestPDF 的主要功能

  • 流暢 API:提供聲明式的方法來定義文件佈局。
  • 現代化佈局系統:受 CSS 啟發,支持網格、組件和靈活的佈局結構。
  • 高性能:優化以快速渲染大型和複雜的文件。

安裝

由於此程式庫可作為 NuGet 套件安裝,安裝它是一個簡單的過程,只需在 NuGet 控制台中運行以下一行即可:

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 Task Main(string[] args)
    {
        // Configure QuestPDF to use the community license
        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 Task Main(string[] args)
    {
        // Configure QuestPDF to use the community license
        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'.");
        }
    }
}
Imports System
Imports System.Net.Http
Imports System.Threading.Tasks
Imports HtmlAgilityPack
Imports QuestPDF.Fluent
Imports QuestPDF.Helpers
Imports QuestPDF.Infrastructure

Public Class Program
	Shared Async Function Main(ByVal args() As String) As Task
		' Configure QuestPDF to use the community license
		QuestPDF.Settings.License = LicenseType.Community

		Dim url As String = "https://www.apple.com"

		' Fetch HTML content from the URL
		Using client As New HttpClient()
			Dim htmlContent As String = Await client.GetStringAsync(url)

			' Parse the HTML content using HtmlAgilityPack
			Dim htmlDoc = New HtmlDocument()
			htmlDoc.LoadHtml(htmlContent)

			' Extract meaningful content (e.g., text inside <body>)
			Dim bodyContent = If(htmlDoc.DocumentNode.SelectSingleNode("//body")?.InnerText, "No content found")

			' Generate PDF using QuestPDF
			Document.Create(Sub(container)
				container.Page(Sub(page)
					page.Size(PageSizes.A4)
					page.Margin(20)
					page.Content().Text(bodyContent)
				End Sub)
			End Sub).GeneratePdf("output.pdf")

			Console.WriteLine("PDF created successfully as 'output.pdf'.")
		End Using
	End Function
End Class
$vbLabelText   $csharpLabel

輸出 PDF 文件

QuestPDF 範例輸出

就像 PDFSharp 一樣,雖然 QuestPDF 可以利用外部程式庫如 HtmlAgilityPack 將 HTML 內容轉換為 PDF,但它無法保持任何 CSS 樣式和格式。 雖然 QuestPDF 是想從頭開始建立 PDF 文件的任何人的好選擇,但 HTML 到 PDF 的轉換並不是這個程式庫的強項。

IronPDF:強大的 PDF 程式庫

IronPDF 是專為需要高級和全面 PDF 功能的 .NET 開發者設計的強大 PDF 程式庫。 它專注於 HTML 到 PDF 的渲染,結合了其他功能如高級 PDF 文件操作選項、加密和 PDF/A 符合性,使其成為企業級應用的強大選擇。

IronPDF的主要功能

  • HTML 到 PDF:輕鬆地呈現完整的網頁或HTML 字串作為 PDFs。
  • PDF/A 符合性:生成符合長期歸檔標準的文件。
  • 高級安全性:支持加密、密碼保護數位簽名
  • 編輯 PDFs:修改、合併和拆分現有的 PDF 文件。
  • 跨平台:完全相容 .NET Framework、.NET Core 和 .NET 5+。

安裝

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

使用 NuGet 套件管理器:

  1. 在Visual Studio中打開您的專案。
  2. 右鍵單擊解決方案資源管理器中的專案並選擇"管理NuGet包"。
  3. 搜尋"IronPDF"並點擊"安裝"。

IronPDF 安裝畫面

使用NuGet套件管理器控制台:

Install-Package IronPdf

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

IronPDF 提供了一個簡單直接的 API,用於將 URLs 轉換為 PDFs。 以下是一個範例:

using IronPdf;

public class PdfConverter
{
    public static void Main(string[] args)
    {
        // Create a renderer with IronPdf
        ChromePdfRenderer renderer = new ChromePdfRenderer();

        // Render the URL as a PDF
        PdfDocument pdf = renderer.RenderUrlAsPdf("https://www.apple.com");

        // Save the PDF
        pdf.SaveAs("url.pdf");
    }
}
using IronPdf;

public class PdfConverter
{
    public static void Main(string[] args)
    {
        // Create a renderer with IronPdf
        ChromePdfRenderer renderer = new ChromePdfRenderer();

        // Render the URL as a PDF
        PdfDocument pdf = renderer.RenderUrlAsPdf("https://www.apple.com");

        // Save the PDF
        pdf.SaveAs("url.pdf");
    }
}
Imports IronPdf

Public Class PdfConverter
	Public Shared Sub Main(ByVal args() As String)
		' Create a renderer with IronPdf
		Dim renderer As New ChromePdfRenderer()

		' Render the URL as a PDF
		Dim pdf As PdfDocument = renderer.RenderUrlAsPdf("https://www.apple.com")

		' Save the PDF
		pdf.SaveAs("url.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

輸出 PDF 文件

IronPDF 範例輸出

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

如這裡所見,IronPDF 是 HTML 到 PDF 轉換的強大選擇,還能將其他文件型別轉換為 PDF。 它以簡潔、易於實施的程式碼塊處理高品質的轉換工作。

詳細分析

易用性

PDFSharp 簡單易用,對於初學者或需要基本 PDF 功能的開發者來說是一個很好的選擇。 它的程式方法允許快速設置和實施,如向 PDF 新增文字、圖形或圖片等任務。 然而,它需要外部程式庫來處理 HTML 和 URL 到 PDF 的轉換工作。

另一方面,QuestPDF 提供了一種更現代化的方法,擁有流暢的 API。 有網頁或 UI 設計經驗的開發者會發現它直觀易用,但新手在習慣其以佈局為中心的設計理念時可能會面臨些許學習曲線。 再次強調,該程式庫缺乏內建的工具來處理 HTML 到 PDF 的轉換。

IronPDF 提供了最簡便的 HTML 到 PDF 轉換經驗和先進的 PDF 功能。 其直觀的 API 降低了實施所需的時間,並提供了詳盡的文件和範例。 IronPDF 可以處理多種不同文件型別轉換為 PDF 的工作,例如本文討論的 URL 到 PDF 轉換範例,且不會損失任何文件質量。

性能

性能是一個關鍵因素,特別是對於需要動態生成 PDF 的應用程式而言。 PDFSharp 對小型和簡單文件來說足夠,但在大規模或複雜佈局時會面臨困難。

QuestPDF 在呈現動態和視覺吸引力的文件上表現出色。 它經過優化以高效處理結構化佈局。

IronPDF 在性能和功能之間取得了出色的平衡,特別是在需要 HTML 渲染、CSS 和 JavaScript 支持的應用中。 它也能輕鬆處理企業級 PDF 任務。

比較總結

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

結論

為您的 .NET 項目選擇正確的 PDF 程式庫取決於您的具體需求。 如果您需要一個輕量、開源的工具來進行基本的 PDF 任務,PDFSharp 是一個不錯的選擇。 對於建立動態的、視覺吸引力的文件,QuestPDF 以其現代方法而脫穎而出。

然而,如果您需要高級功能、無縫的 HTML 到 PDF 轉換和企業級功能,請查看 IronPDF 的提供內容。

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

請注意PDFSharp 和 QuestPDF 是其各自所有者的註冊商標。 本網站與 PDFSharp 或 QuestPDF 無關,未獲其贊同或贊助。 所有產品名稱、徽標和品牌均為其各自所有者的財產。 比較僅供資訊參考,並反映了撰寫時的公開可用資訊。

常見問題

PDFsharp、QuestPDF 和 IronPDF 之間有什麼區別?

PDFsharp 以其簡單性和核心 PDF 功能而聞名,適合基本任務。QuestPDF 提供現代化的 API 用於視覺上吸引人的文件,但缺乏原生的 HTML 轉換。IronPDF 在 HTML 到 PDF 的渲染和高級操作方面表現出色,非常適合企業應用。

如何在 .NET 中將 HTML 渲染為 PDF?

您可以使用 IronPDF 在 .NET 中將 HTML 渲染為 PDF。它支持完整的 CSS 和 JavaScript,允許高品質的文件轉換。

為什麼我可能會選擇 QuestPDF 作為我的專案?

QuestPDF 是需要動態且視覺上複雜的 PDF 文件的專案的理想選擇。其流暢的 API 允許靈活的佈局,儘管缺乏對 HTML 到 PDF 轉換的原生支持。

using PDFsharp 有哪些限制?

PDFsharp 的限制在於它不原生支持 HTML 到 PDF 轉換。它最適合於基本的 PDF 建立和編輯任務。

IronPDF 如何支持高級 PDF 操作?

IronPDF 提供高級功能,如 PDF 編輯、加密以及對 PDF/A 合規性的支持。它專為需要強大 PDF 處理的企業級應用設計。

我可以使用 PDFsharp 建立視覺上吸引人的 PDF 嗎?

儘管 PDFsharp 提供基本的 PDF 建立和編輯功能,它缺乏 QuestPDF 和 IronPDF 中的高級佈局和設計能力,這些功能更適合視覺上複雜的文件。

這些 PDF 程式庫的安裝步驟是什麼?

所有三個程式庫都可以通過 Visual Studio 中的 NuGet 套件管理器安裝。在 NuGet 套件管理器控制台使用命令 Install-Package [LibraryName],將 [LibraryName] 替換為 PDFsharp、QuestPDF 或 IronPDF。

using IronPDF 是否有費用?

是的,IronPDF 需要商業授權來進行部署,提供廣泛的支持和適合企業級應用的高級功能。

Curtis Chau
技術作家

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

除了開發,Curtis對物聯網(IoT)有濃厚的興趣,探索創新的方法來整合硬體和軟體。在空閒時間,他喜歡玩遊戲和建立Discord機器人,結合他對技術的熱愛與創造力。

QuestPDF Logo

厭倦了昂貴的續費和過時的產品更新?

QuestPDF輕鬆切換,透過我們的工程遷移支援和更好的交易。

IronPDF Logo

Iron 支援團隊

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