在生產環境中測試,無水印。
在任何需要的地方都能運行。
獲得 30 天的全功能產品。
在幾分鐘內上手運行。
試用產品期間完全訪問我們的支援工程團隊
在 .NET 中處理 PDF 文件時,開發人員常常需要比較各種函式庫,以確定哪一個最符合他們的項目需求。 .NET 生態系統中三個受歡迎的選擇是PDFsharp, QuestPDF和IronPDF. 每個庫適合不同的使用場景,並提供獨特的優勢和劣勢。 在本文中,我們將深入比較這些庫,以及它們如何處理基本的 PDF 生成。這個網址幫助您做出明智的決定。
PDFsharp 是一個開源庫,旨在創建、編輯和呈現 PDF 文件。 PDFsharp 專注於簡單性和核心 PDF 功能,一直是尋求簡單 PDF 操控功能的開發人員的可靠工具。
透過使用 NuGet 套件管理器,將 PDFsharp 安裝到您的專案中非常簡單,只需在 NuGet 套件管理器主控台中執行以下指令:
Install-Package PDFsharp
Install-Package PDFsharp
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'Install-Package 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'.");
}
}
}
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 System.Threading.Tasks.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
正如您所見,雖然PDFsharp可以用來將HTML內容和網頁轉換為PDF文件,但它需要額外的庫的幫助,且無法保留原始網站上的CSS和格式。雖然PDFsharp是個不錯的免費PDF開發庫,但它確實缺乏一些付費庫(如IronPDF)中的更高級功能。
QuestPDF 是一個現代的開源庫,專注於使用流暢的 API 生成視覺上吸引人的 PDF。 其對文件佈局和渲染的創新方法使其成為需要動態和複雜設計的應用程式的有力競爭者。
再次感謝這個庫可以作為 NuGet 套件使用,安裝它是一個簡單明瞭的過程,只需在 NuGet 控制台中運行一行命令即可:
Install-Package QuestPDF
Install-Package QuestPDF
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'Install-Package 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'.");
}
}
}
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 System.Threading.Tasks.Task
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
就像我們在 PDFSharp 中看到的一樣,雖然 QuestPDF 可以在外部庫如 HtmlAgilityPack 的協助下用於將 HTML 內容轉換為 PDF,但它無法保留任何 CSS 樣式和格式。 雖然 QuestPDF 是任何想從頭創建 PDF 文件的人的一個很好的選擇,但 HTML 到 PDF 的轉換並不是此庫的強項。
IronPDF是一個為 .NET 開發人員設計的強大 PDF 庫,提供先進和全面的 PDF 功能。 它專注於 HTML-to-PDF 渲染,結合其他附加功能,如操控 PDF 文件的高級選項、加密和 PDF/A 合規性,使其成為企業級應用程式的強大選擇。
要安裝IronPDF,請在Visual Studio中使用NuGet套件管理器:
使用 NuGet 套件管理器
在 Visual Studio 中打開您的專案。
在方案總管中右鍵點擊專案,然後選擇「管理 NuGet 套件」。
搜索 "IronPDF" 並點擊 "Install"。
使用 NuGet 套件管理員主控台:
Install-Package IronPdf
Install-Package IronPdf
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'Install-Package IronPdf
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");
Imports IronPdf
Private renderer As New ChromePdfRenderer()
Private pdf As PdfDocument = renderer.RenderUrlAsPdf("https://www.apple.com")
pdf.SaveAs("url.pdf")
上面的程式碼範例展示了如何使用 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 任務。
選擇適合您 .NET 專案的 PDF 庫取決於您的具體需求。 如果您需要一個輕量、開源的工具來執行基本的 PDF 任務,PDFsharp是一個不錯的選擇。 用於創建動態且視覺吸引人的文件,QuestPDF以其現代化的方法脫穎而出。
但是,如果您需要高級功能、無縫的HTML到PDF轉換,以及企業級功能,IronPDF它所提供的。
透過了解每個庫的優勢和限制,您可以做出符合專案需求的明智決定。