在实际环境中测试
在生产中测试无水印。
随时随地为您服务。
随着互联网上用于处理PDF的工具数量不断增加,选择最适合您需求的PDF库可能是一项艰巨的任务。 (便携式文档格式)那么今天让我们帮助您,仔细看看两种不同的PDF工具, IronPDF 和QuestPDF。
IronPDF 是一个全面的 .NET 库,以其在创建、编辑和处理 PDF 文档方面的多功能性而闻名。IronPDF 拥有广泛的功能,包括 HTML 转换为 PDF、文档安全性、交互式表单等,将是您开发者工具包中的宝贵补充。
QuestPDF 是一个开源的 .NET 库,专注于提供一种易于使用、仅代码的方法来生成 PDF。如果您喜欢简单、精简、以代码为中心的工作流程,而无需使用专有的脚本语言或格式,那么 QuestPDF 是理想的选择。
IronPDF 支持广泛的平台,确保您可以在您喜欢的环境中工作。以下是其兼容性的细分:
.NET 版本:
(C#, VB.NET, F#)
.NET Core (8、7、6、5 和 3.1+)
更多信息,请访问 IronPDF.
QuestPDF 提供强大的跨平台兼容性,这意味着无论您使用什么平台,您都很可能能够将 QuestPDF 集成到您的工作环境中。
.NET 版本:
.NET Core (3.1+)
IronPDF 和 QuestPDF 提供了不同的功能集,以满足不同用户的需求,因此选择哪个库对您最适合取决于您计划如何使用您正在处理的 PDF。以下是它们核心功能的比较:
有关 IronPDF 提供的更多详细功能列表,请访问 ironpdf.com.
在选择适合您的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 是你的理想工具。凭借其内置支持,IronPDF 为你提供了一个简单高效的 HTML 到 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");
Imports IronPdf
Imports System
'Open an Encrypted File, alternatively create a new PDF from Html
Private 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")
QuestPDF:
QuestPDF没有内置PDF加密支持,如果你想对PDF进行加密,你会发现自己需要借助外部库。然而,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 将使您的 PDF 内容编辑变得简单,其简洁而有效的编辑工具能够通过几行代码即可编辑内容。另一方面,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 进行数字签名。
如果您想高效地处理 PDF 文件的数字签名,那么 IronPDF 是这里的明确选择,它可以轻松处理 PDF 文件的数字签名。您将通过其易于使用的强大 API 完全控制整个过程。
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 文件添加水印。
如果您熟悉 HTML 和 CSS,那么您将发现 IronPDF 的水印工具更易于使用,因为它使用 HTML 和 CSS 来进行水印的样式和位置设定。使用 IronPDF,您将能够以编程方式向您处理的任何 PDF 添加自定义水印。然而,如果您正在使用 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 确实支持将文本和图像添加到您的 PDF 页面上,但正如您在上面的示例中所看到的,IronPDF 提供了一种更简洁且易于使用的方法来完成此任务。使用 IronPDF,您将能够比使用 QuestPDF 所需的工作更少地实现最终结果。QuestPDF 采用较为耗时且手动的方法来完成此任务。
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。
IronPDF 在处理文件转换方面是一个全能冠军,具有内置将多种不同文档类型转换为 PDF 的能力,包括 DOCX,如此处所示。而 QuestPDF 又需要一个额外的库来执行此任务。
IronPDF 有不同等级和额外功能的许可证供购买。开发者还可以购买 Iron Suite 这将让您以两个产品的价格获取所有IronSoftware的产品。如果您还没准备好购买许可证,IronPDF提供一个 免费试用 有效期为30天。
IronPDF 擅长提供详尽的文档和支持:
欲了解更多信息,请查看 IronPDF 的详尽 文献资料,并访问 IronSoftware YouTube频道.
QuestPDF 依赖社区贡献文档和支持,这可能不像 IronPDF 的产品那样广泛或结构化。
IronPDF 和 QuestPDF 都为 .NET 的 PDF 生成提供了有价值的工具,满足不同的开发需求。因此,选择哪一个最适合您实际上取决于您的需求和预算。QuestPDF 作为开源软件且易于使用,适合那些寻求代码为中心、轻量级解决方案的开发人员。如果您不需要 IronPDF 提供的所有附加功能,只是想要一个免费的、简单的 PDF 库,那么 QuestPDF 可能是您的合适选择。
IronPDF 以其全面的功能集、丰富的文档和强大的支持而脱颖而出,成为企业级应用程序的理想选择。通过在开发人员的工具包中加入 IronPDF,没有任何与 PDF 相关的任务是太大的,并且在处理更复杂的 PDF 任务时,几乎不需要安装额外的库。