在實際環境中測試
在生產環境中測試無浮水印。
在任何需要的地方都能運作。
隨著互聯網上用於處理 PDF 的工具不斷增多,選擇適合您需求的 PDF 庫可能是一項艱鉅的任務。(可攜式文件格式). 那麼今天讓我們幫助你,仔細看看兩種不同的 PDF 工具,IronPDF和QuestPDF。
IronPDF是一個全面的 .NET 函式庫,以其在創建、編輯和處理 PDF 文件方面的多功能性而聞名。 IronPDF 擁有多種功能,包括 HTML 轉換為 PDF、文件安全、互動表單等,將成為您開發者工具包中不可或缺的補充。
QuestPDF 是一個開源的 .NET 庫,專注於提供一個易於使用、僅代碼的方法來生成 PDF。 若您偏好簡單、精簡且以程式碼為中心的工作流程,而不需要使用專有的腳本語言或格式,QuestPDF 是理想的選擇。
IronPDF 支援多種平台,確保您可以在您偏好的環境中工作。 以下是其兼容性分析:
QuestPDF 提供強大的跨平台相容性,這意味著無論您在什麼平台上工作,您都很有可能將 QuestPDF 實施到您的工作環境中。
IronPDF 和 QuestPDF 提供不同的功能集,以滿足不同用戶的需求,因此選擇哪個庫最適合您,取決於您計劃如何使用您正在處理的 PDF。 以下是其核心功能的比較:
PDF 編輯功能: 使用 IronPDF,您可以輕鬆編輯 PDF 檔案。 IronPDF 提供編輯功能,例如添加頁眉和頁腳,將文字和圖像蓋印到 PDF 頁面上,向 PDF 添加自定義水印,以及處理 PDF 表單,拆分或合併 PDF 文件。
如需更詳細的功能列表,請造訪IronPDF 的功能頁面.
在選擇適合您的PDF庫之前,讓我們看看一些您可能會有的PDF庫的常見使用案例,比較IronPDF和QuestPDF如何處理這些任務。
using IronPdf;
// Disable local disk access or cross-origin requests
Installation.EnableWebSecurity = true;
// Instantiate Renderer
var renderer = new ChromePdfRenderer();
// Create a PDF from an HTML string using C#
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
pdf.SaveAs("output.pdf");
// Advanced Example with HTML Assets
// Load external html assets: images, CSS and JavaScript.
var myAdvancedPdf = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", @"C:\site\assets\");
myAdvancedPdf.SaveAs("html-with-assets.pdf");
using IronPdf;
// Disable local disk access or cross-origin requests
Installation.EnableWebSecurity = true;
// Instantiate Renderer
var renderer = new ChromePdfRenderer();
// Create a PDF from an HTML string using C#
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
pdf.SaveAs("output.pdf");
// Advanced Example with HTML Assets
// Load external html assets: images, CSS and JavaScript.
var myAdvancedPdf = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", @"C:\site\assets\");
myAdvancedPdf.SaveAs("html-with-assets.pdf");
Imports IronPdf
' Disable local disk access or cross-origin requests
Installation.EnableWebSecurity = True
' Instantiate Renderer
Dim renderer = New ChromePdfRenderer()
' Create a PDF from an HTML string using C#
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>")
pdf.SaveAs("output.pdf")
' Advanced Example with HTML Assets
' Load external html assets: images, CSS and JavaScript.
Dim myAdvancedPdf = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", "C:\site\assets\")
myAdvancedPdf.SaveAs("html-with-assets.pdf")
QuestPDF:
QuestPDF 不原生支援將 HTML 轉換為 PDF,因為它設計的重點是透過程式方式創建 PDF,而不是將其他檔案轉換為 PDF 格式。
將 HTML 內容轉換為 PDF 文件,IronPDF 的 HTML-to-PDF 工具建議使用,提供直接且高效的解決方案。
using IronPdf;
using System;
//Open an Encrypted File, alternatively create a new PDF from Html
var pdf = PdfDocument.FromFile("encrypted.pdf", "password");
//Edit file metadata
pdf.MetaData.Author = "Satoshi Nakamoto";
pdf.MetaData.Keywords = "SEO, Friendly";
pdf.MetaData.ModifiedDate = DateTime.Now;
//The following code makes a PDF read-only and will disallow copy & paste and printing
pdf.SecuritySettings.RemovePasswordsAndEncryption();
pdf.SecuritySettings.MakePdfDocumentReadOnly("secret-key");
pdf.SecuritySettings.AllowUserAnnotations = false;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserFormData = false;
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.FullPrintRights;
// change or set the document encryption password
pdf.Password = "my-password";
pdf.SaveAs("secured.pdf");
using IronPdf;
using System;
//Open an Encrypted File, alternatively create a new PDF from Html
var pdf = PdfDocument.FromFile("encrypted.pdf", "password");
//Edit file metadata
pdf.MetaData.Author = "Satoshi Nakamoto";
pdf.MetaData.Keywords = "SEO, Friendly";
pdf.MetaData.ModifiedDate = DateTime.Now;
//The following code makes a PDF read-only and will disallow copy & paste and printing
pdf.SecuritySettings.RemovePasswordsAndEncryption();
pdf.SecuritySettings.MakePdfDocumentReadOnly("secret-key");
pdf.SecuritySettings.AllowUserAnnotations = false;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserFormData = false;
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.FullPrintRights;
// change or set the document encryption password
pdf.Password = "my-password";
pdf.SaveAs("secured.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
QuestPDF:
由於缺乏內建的 PDF 加密支援,QuestPDF 用戶如果需要加密將會依賴外部函式庫。 然而,QuestPDF 可以修改 PDF 的元數據。
如果檔案加密或安全性設置調整是常規操作,則建議使用 IronPDF,其直觀的加密工具相比缺乏廣泛功能且需額外庫的工具如 QuestPDF 更受歡迎。
using IronPdf;
PdfDocument pdf = PdfDocument.FromFile("novel.pdf");
// Redact 'are' phrase from all pages
pdf.RedactTextOnAllPages("are");
pdf.SaveAs("redacted.pdf");
using IronPdf;
PdfDocument pdf = PdfDocument.FromFile("novel.pdf");
// Redact 'are' phrase from all pages
pdf.RedactTextOnAllPages("are");
pdf.SaveAs("redacted.pdf");
Imports IronPdf
Private pdf As PdfDocument = PdfDocument.FromFile("novel.pdf")
' Redact 'are' phrase from all pages
pdf.RedactTextOnAllPages("are")
pdf.SaveAs("redacted.pdf")
QuestPDF:
QuestPDF 不直接支援內容刪減,如果您想在使用 QuestPDF 時刪減內容,您需要額外使用像 iTextSharp 這樣的函式庫。
使用 IronPDF,編輯內容變得簡單且高效,而 QuestPDF 需要輔助庫才能執行編輯任務。
using IronPdf;
using IronPdf.Signing;
using System.Security.Cryptography.X509Certificates;
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>foo</h1>");
// Create X509Certificate2 object with X509KeyStorageFlags set to Exportable
X509Certificate2 cert = new X509Certificate2("IronSoftware.pfx", "123456", X509KeyStorageFlags.Exportable);
// Create PdfSignature object
var sig = new PdfSignature(cert);
// Sign PDF document
pdf.Sign(sig);
pdf.SaveAs("signed.pdf");
using IronPdf;
using IronPdf.Signing;
using System.Security.Cryptography.X509Certificates;
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>foo</h1>");
// Create X509Certificate2 object with X509KeyStorageFlags set to Exportable
X509Certificate2 cert = new X509Certificate2("IronSoftware.pfx", "123456", X509KeyStorageFlags.Exportable);
// Create PdfSignature object
var sig = new PdfSignature(cert);
// Sign PDF document
pdf.Sign(sig);
pdf.SaveAs("signed.pdf");
Imports IronPdf
Imports IronPdf.Signing
Imports System.Security.Cryptography.X509Certificates
Private renderer As New ChromePdfRenderer()
Private pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>foo</h1>")
' Create X509Certificate2 object with X509KeyStorageFlags set to Exportable
Private cert As New X509Certificate2("IronSoftware.pfx", "123456", X509KeyStorageFlags.Exportable)
' Create PdfSignature object
Private sig = New PdfSignature(cert)
' Sign PDF document
pdf.Sign(sig)
pdf.SaveAs("signed.pdf")
QuestPDF:
QuestPDF 不能用於數位簽署 PDF。 相反,您可以使用 QuestPDF 創建 PDF,然後使用外部庫對該 PDF 進行數字簽名。
為了簡化數位簽章,IronPDF 的簽署功能提供全面控制和使用方便,不同於QuestPDF。
using IronPdf;
// Stamps a Watermark onto a new or existing PDF
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf");
pdf.ApplyWatermark("<h2 style='color:red'>SAMPLE</h2>", 30, IronPdf.Editing.VerticalAlignment.Middle, IronPdf.Editing.HorizontalAlignment.Center);
pdf.SaveAs(@"C:\Path\To\Watermarked.pdf");
using IronPdf;
// Stamps a Watermark onto a new or existing PDF
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf");
pdf.ApplyWatermark("<h2 style='color:red'>SAMPLE</h2>", 30, IronPdf.Editing.VerticalAlignment.Middle, IronPdf.Editing.HorizontalAlignment.Center);
pdf.SaveAs(@"C:\Path\To\Watermarked.pdf");
Imports IronPdf
' Stamps a Watermark onto a new or existing PDF
Private renderer = New ChromePdfRenderer()
Private pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf")
pdf.ApplyWatermark("<h2 style='color:red'>SAMPLE</h2>", 30, IronPdf.Editing.VerticalAlignment.Middle, IronPdf.Editing.HorizontalAlignment.Center)
pdf.SaveAs("C:\Path\To\Watermarked.pdf")
QuestPDF:
由於該庫的簡化特性,QuestPDF無法用來為您的PDF文件添加浮水印。
利用IronPDF的HTML/CSS功能來製作自訂浮水印,相較於QuestPDF缺乏原生浮水印支援。
using IronPdf;
using IronPdf.Editing;
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Example HTML Document!</h1>");
// Create text stamper
TextStamper textStamper = new TextStamper()
{
Text = "Text Stamper!",
FontFamily = "Bungee Spice",
UseGoogleFont = true,
FontSize = 30,
IsBold = true,
IsItalic = true,
VerticalAlignment = VerticalAlignment.Top,
};
// Stamp the text stamper
pdf.ApplyStamp(textStamper);
pdf.SaveAs("stampText.pdf");
// Create image stamper
ImageStamper imageStamper = new ImageStamper(new Uri("https://ironpdf.com/img/svgs/iron-pdf-logo.svg"))
{
VerticalAlignment = VerticalAlignment.Top,
};
// Stamp the image stamper
pdf.ApplyStamp(imageStamper, 0);
pdf.SaveAs("stampImage.pdf");
using IronPdf;
using IronPdf.Editing;
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Example HTML Document!</h1>");
// Create text stamper
TextStamper textStamper = new TextStamper()
{
Text = "Text Stamper!",
FontFamily = "Bungee Spice",
UseGoogleFont = true,
FontSize = 30,
IsBold = true,
IsItalic = true,
VerticalAlignment = VerticalAlignment.Top,
};
// Stamp the text stamper
pdf.ApplyStamp(textStamper);
pdf.SaveAs("stampText.pdf");
// Create image stamper
ImageStamper imageStamper = new ImageStamper(new Uri("https://ironpdf.com/img/svgs/iron-pdf-logo.svg"))
{
VerticalAlignment = VerticalAlignment.Top,
};
// Stamp the image stamper
pdf.ApplyStamp(imageStamper, 0);
pdf.SaveAs("stampImage.pdf");
Imports IronPdf
Imports IronPdf.Editing
Private renderer As New ChromePdfRenderer()
Private pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Example HTML Document!</h1>")
' Create text stamper
Private textStamper As New TextStamper() With {
.Text = "Text Stamper!",
.FontFamily = "Bungee Spice",
.UseGoogleFont = True,
.FontSize = 30,
.IsBold = True,
.IsItalic = True,
.VerticalAlignment = VerticalAlignment.Top
}
' Stamp the text stamper
pdf.ApplyStamp(textStamper)
pdf.SaveAs("stampText.pdf")
' Create image stamper
Dim imageStamper As New ImageStamper(New Uri("https://ironpdf.com/img/svgs/iron-pdf-logo.svg")) With {.VerticalAlignment = VerticalAlignment.Top}
' Stamp the image stamper
pdf.ApplyStamp(imageStamper, 0)
pdf.SaveAs("stampImage.pdf")
QuestPDF:
using QuestPDF.Fluent;
using QuestPDF.Infrastructure;
using QuestPDF.Helpers;
Document.Create(container =>
{
container.Page(page =>
{
page.Size(PageSizes.A4);
page.Margin(2, Unit.Centimetre);
page.PageColor(Colors.White);
page.DefaultTextStyle(x => x.FontSize(12));
// Adding Header and Footer for context
page.Header()
.Text("Header Text")
.FontSize(20)
.Bold()
.AlignCenter();
page.Footer()
.Text("Footer Text")
.FontSize(12)
.AlignCenter();
// Adding main content and stamps
page.Content()
.Canvas(canvas =>
{
// Main content
canvas.DrawText("This is the main content of the page.", x =>
{
x.Translate(50, 50);
x.FontSize(12);
});
// Stamped text
canvas.DrawText("Stamped Text", x =>
{
x.Translate(200, 200); // Position the text
x.FontSize(30);
x.Bold();
x.FontColor(Colors.Red);
});
// Stamped image
canvas.DrawImage("path/to/image.png", x =>
{
x.Translate(200, 300); // Position the image
x.Width(100); // Set the width of the image
});
});
});
}).GeneratePdf("output.pdf");
using QuestPDF.Fluent;
using QuestPDF.Infrastructure;
using QuestPDF.Helpers;
Document.Create(container =>
{
container.Page(page =>
{
page.Size(PageSizes.A4);
page.Margin(2, Unit.Centimetre);
page.PageColor(Colors.White);
page.DefaultTextStyle(x => x.FontSize(12));
// Adding Header and Footer for context
page.Header()
.Text("Header Text")
.FontSize(20)
.Bold()
.AlignCenter();
page.Footer()
.Text("Footer Text")
.FontSize(12)
.AlignCenter();
// Adding main content and stamps
page.Content()
.Canvas(canvas =>
{
// Main content
canvas.DrawText("This is the main content of the page.", x =>
{
x.Translate(50, 50);
x.FontSize(12);
});
// Stamped text
canvas.DrawText("Stamped Text", x =>
{
x.Translate(200, 200); // Position the text
x.FontSize(30);
x.Bold();
x.FontColor(Colors.Red);
});
// Stamped image
canvas.DrawImage("path/to/image.png", x =>
{
x.Translate(200, 300); // Position the image
x.Width(100); // Set the width of the image
});
});
});
}).GeneratePdf("output.pdf");
Imports QuestPDF.Fluent
Imports QuestPDF.Infrastructure
Imports QuestPDF.Helpers
Document.Create(Sub(container)
container.Page(Sub(page)
page.Size(PageSizes.A4)
page.Margin(2, Unit.Centimetre)
page.PageColor(Colors.White)
page.DefaultTextStyle(Function(x) x.FontSize(12))
' Adding Header and Footer for context
page.Header().Text("Header Text").FontSize(20).Bold().AlignCenter()
page.Footer().Text("Footer Text").FontSize(12).AlignCenter()
' Adding main content and stamps
page.Content().Canvas(Sub(canvas)
' Main content
canvas.DrawText("This is the main content of the page.", Sub(x)
x.Translate(50, 50)
x.FontSize(12)
End Sub)
' Stamped text
canvas.DrawText("Stamped Text", Sub(x)
x.Translate(200, 200) ' Position the text
x.FontSize(30)
x.Bold()
x.FontColor(Colors.Red)
End Sub)
' Stamped image
canvas.DrawImage("path/to/image.png", Sub(x)
x.Translate(200, 300) ' Position the image
x.Width(100) ' Set the width of the image
End Sub)
End Sub)
End Sub)
End Sub).GeneratePdf("output.pdf")
IronPDF 和 QuestPDF 都支持文本和圖像水印,但與 QuestPDF 冗長的方法相比,IronPDF 簡潔的方法更直接。
using IronPdf;
// Instantiate Renderer
DocxToPdfRenderer renderer = new DocxToPdfRenderer();
// Render from DOCX file
PdfDocument pdf = renderer.RenderDocxAsPdf("Modern-chronological-resume.docx");
// Save the PDF
pdf.SaveAs("pdfFromDocx.pdf");
using IronPdf;
// Instantiate Renderer
DocxToPdfRenderer renderer = new DocxToPdfRenderer();
// Render from DOCX file
PdfDocument pdf = renderer.RenderDocxAsPdf("Modern-chronological-resume.docx");
// Save the PDF
pdf.SaveAs("pdfFromDocx.pdf");
Imports IronPdf
' Instantiate Renderer
Private renderer As New DocxToPdfRenderer()
' Render from DOCX file
Private pdf As PdfDocument = renderer.RenderDocxAsPdf("Modern-chronological-resume.docx")
' Save the PDF
pdf.SaveAs("pdfFromDocx.pdf")
QuestPDF:
QuestPDF 不直接支援 DOCX 轉 PDF 的轉換。 要使用 QuestPDF 將 DOCX 文件轉換為 PDF,需要額外的庫,如 Aspose.Words 或 Syncfusion。
選擇內建 DOCX 轉換功能的 IronPDF,而不是天生缺少此功能的 QuestPDF。
查看IronPDF 授權選項對於不同級別和附加功能。 開發者亦可購買IronSuite 訪問,其中包括所有 IronSoftware 產品,價格相當於兩個產品的價格。 IronPDF 也提供一個免費試用為期 30 天。
IronSuite: 使用 $1,498 購買 IronSuite 可以使用所有包括 IronPDF、IronOCR、IronWord、IronXL、IronBarcode、IronQR、IronZIP、IronPrint 和 IronWebScraper 在內的 Iron Software 產品。
IronPDF 在提供廣泛的文檔和支援方面表現出色:
定期更新: 每月產品更新,以確保最新功能和安全修補程式。
如需更多資訊,請查看IronPDF 的文件並訪問IronSoftware YouTube 頻道.
YouTube 影片:QuestPDF 在 YouTube 上的影響力日益增長,發布影片以幫助開發人員學習如何使用該庫的不同方面。
QuestPDF 倚賴社群貢獻來提供文件和支援,這可能不如 IronPDF 的服務那麼廣泛或有組織性。
IronPDF 和 QuestPDF 都提供了有價值的工具,用於 .NET 中的 PDF 生成,以滿足不同的開發需求。 選擇最合適的選項取決於您的需求和預算。 QuestPDF 是開源且易於使用,非常適合尋找以代碼為中心的輕量級解決方案的開發人員。 如果您不需要 IronPDF 提供的所有額外功能,而只想要一個免費且簡單的 PDF 庫,那麼 QuestPDF 可能是適合您的選擇。
IronPDF以其全面的功能集、詳盡的文檔和強大的支持而脫穎而出,是企業級應用的理想選擇。 使用 IronPDF,無論是多麼大的 PDF 相關任務都不是問題,而且處理複雜的 PDF 任務時,幾乎不需要安裝額外的庫。
IronPDF以其全面的功能集、詳盡的文檔和強大的支持而脫穎而出,是企業級應用的理想選擇。 在您的開發者工具包中有 IronPDF,任何與 PDF 相關的任務都不會過於繁重,並且在處理更複雜的 PDF 任務時,安裝額外庫的可能性也較小。
您可以嘗試使用 0 天免費試用 查看他們的可用功能。