在实际环境中测试
在生产中测试无水印。
随时随地为您服务。
选择适合您需求的PDF库可能很困难,因为市面上有看似无数的PDF库供您选择。 在比较不同的PDF库时,有几点需要注意,例如: 这个库提供了哪些功能? 这些功能是否能满足您的需求,还是只能满足您一半的需求? 该库提供什么级别的支持和文档? 学习曲线陡峭吗? 那么关于定价呢? 许可证价格在您的预算内吗?
今天,我们将要看一下两个功能强大的PDF生成库:IronPDF和 WkHtmlToPdf。 每个库都带来了其独特的优势,为不同的 PDF 生成和操作需求提供了解决方案。
IronPDF是一个强大的C#库,可以在.NET框架内实现无缝的PDF创建、操作和处理。 IronPDF 具备用户友好的 API,并广泛支持各种 PDF 相关功能,使开发人员更轻松地将 PDF 功能集成到 C# 应用程序中。 该库以其全面的功能集而闻名,包括HTML到PDF转换、文本和图像提取、表单处理以及加密和数字签名等文档安全选项。 您可以通过 NuGet 包管理器控制台轻松安装 IronPDF,并快速运行该库。有关更多信息,请访问IronPDF的官方网站.
WkHtmlToPdf 是 WkHtmlToPdf 库的 .NET Core P/Invoke 包装器,该库是一种使用 Qt Webkit 渲染引擎将 HTML 页面转换为 PDF 的流行工具。这个开源库从 DinkToPdf 分支而来,提供基本的 HTML 到 PDF 转换功能,重点是简单性和高效性。 安装很简单,下载并运行WkHtmlToPdf可执行文件后,您只需确保将其添加到系统的路径环境变量中即可。 虽然缺乏IronPDF提供的高级功能,但WkHtmlToPdf是一个轻量级且易于使用的库。
IronPDF因其广泛的跨平台兼容性而脱颖而出。 它支持 .NET 框架内的广泛环境,确保在不同平台上的无缝运行。
.NET 版本:
完全使用C#编写并支持C#,VB.NET,和 F#
.NET Core(8、7、6、5 和 3.1+)
操作系统和处理器: 支持多种不同的操作系统和处理器,包括Windows、Mac、Linux、x64、x86、ARM。
有关IronPDF兼容性的更多详细信息,请访问IronPDF 兼容性.
在比较IronPDF和WkHtmlToPdf时,有必要查看这两个库在PDF生成和操作方面提供的功能。
PDF编辑功能: 使用IronPDF,您可以处理现有的PDF文档,编辑它们,并轻松读取PDF文件。 IronPDF 提供的编辑功能包括添加页眉和页脚,将文本和图像盖章到PDF页面上,为PDF添加自定义水印,处理PDF表单,以及拆分或合并PDF文件。
有关IronPDF功能的更多详细信息,请访问IronPDF 功能.
IronPDF:
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>");
// Export to a file or Stream
pdf.SaveAs("output.pdf");
// Advanced Example with HTML Assets
// Load external html assets: Images, CSS and JavaScript.
// An optional BasePath 'C:\site\assets\' is set as the file location to load assets from
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>");
// Export to a file or Stream
pdf.SaveAs("output.pdf");
// Advanced Example with HTML Assets
// Load external html assets: Images, CSS and JavaScript.
// An optional BasePath 'C:\site\assets\' is set as the file location to load assets from
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>")
' Export to a file or Stream
pdf.SaveAs("output.pdf")
' Advanced Example with HTML Assets
' Load external html assets: Images, CSS and JavaScript.
' An optional BasePath 'C:\site\assets\' is set as the file location to load assets from
Dim myAdvancedPdf = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", "C:\site\assets\")
myAdvancedPdf.SaveAs("html-with-assets.pdf")
WkHtmlToPdf(使用DinkToPdf):**
using DinkToPdf;
var converter = new BasicConverter(new PdfTools());
var doc = new HtmlToPdfDocument()
{
Objects = { new ObjectSettings() { HtmlContent = "<h1>Hello World</h1>" } }
};
byte[] pdf = converter.Convert(doc);
System.IO.File.WriteAllBytes("HtmlToPdf.pdf", pdf);
using DinkToPdf;
var converter = new BasicConverter(new PdfTools());
var doc = new HtmlToPdfDocument()
{
Objects = { new ObjectSettings() { HtmlContent = "<h1>Hello World</h1>" } }
};
byte[] pdf = converter.Convert(doc);
System.IO.File.WriteAllBytes("HtmlToPdf.pdf", pdf);
Imports DinkToPdf
Private converter = New BasicConverter(New PdfTools())
Private doc = New HtmlToPdfDocument() With {
.Objects = {
New ObjectSettings() With {.HtmlContent = "<h1>Hello World</h1>"}
}
}
Private pdf() As Byte = converter.Convert(doc)
System.IO.File.WriteAllBytes("HtmlToPdf.pdf", pdf)
WkHtmlToPdf(使用命令行)**
wkhtmltopdf myfile.html myfile.pdf
wkhtmltopdf myfile.html myfile.pdf
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'wkhtmltopdf myfile.html myfile.pdf
使用IronPDF,您可以创建像素完美的从 HTML 导出 PDF 文件只需几行代码的内容! 其对现代网页标准的支持保证了您生成的PDF文件尽可能保留原始来源的质量。 WkHtmlToPdf 基于 HTML 到 PDF 的转换,其简单的方法无论是作为另一个库的一部分,还是在命令行工具中,都能够展示这一点。
IronPDF:
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;
//Edit file security settings
//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;
//Edit file security settings
//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
'Edit file security settings
'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")
WkHtmlToPdf:
WkHtmlToPdf 不直接提供加密支持,需要第三方库。
IronPDF提供了一种简单易用的方法来加密PDF文件同时为您提供对整个过程的充足控制。 由于WkHtmlToPdf更专注于HTML到PDF的转换工具,它本身不提供对PDF加密的直接支持。
IronPDF:
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")
WkHtmlToPdf:
WkHtmlToPdf 缺少内置编辑功能。
IronPDF 的涂销此功能是一个强大且简洁的API,使您可以轻松地在几行代码中编辑指定内容,从而简化了编辑任务的自动化。 WkHtmlToPdf 不提供任何内置的 PDF 涂改支持。
IronPDF:
using IronPdf;
using IronPdf.Signing;
using System.Security.Cryptography.X509Certificates;
// Instantiate Renderer
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;
// Instantiate Renderer
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
' Instantiate Renderer
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")
WkHtmlToPdf C#:
WkHtmlToPdf C# 不提供对签署PDF的原生支持。
当你使用IronPDF时,很容易数字签名通过其易于使用的数字签名功能签署您的PDF。 这个强大的签名工具为您提供了开始以编程方式对PDF文件进行数字签名所需的工具,如果您经常需要签署PDF文件,它可以为您节省时间。 使用WkHtmlToPdf时,它本身无法处理PDF签名,但是如果您将其作为另一个库的一部分使用,该库可能具备执行此任务的能力。
IronPDF:
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")
WkHtmlToPdf:
没有直接明确的方法来实现这一点。 相反,您需要实现高级 CSS 样式以应用水印,或者使用可以处理水印的单独的 PDF 库。
IronPDF为用户提供了一个强大而简洁的水印工具。 采用类似于HTML/CSS的方法,IronPDF的水印工具易于使用,并使自定义水印应用到PDF文件变得轻而易举。 如果您单独使用WkHtmlToPdf,水印只能通过CSS来实现。
IronPDF:
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");
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");
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")
using IronPdf;
using IronPdf.Editing;
using System;
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Example HTML Document!</h1>");
// 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;
using System;
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Example HTML Document!</h1>");
// 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
Imports System
Private renderer As New ChromePdfRenderer()
Private pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Example HTML Document!</h1>")
' Create image stamper
Private 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")
WkHtmlToPdf C#:
使用HTML和CSS进行文本和图像的加盖需要使用间接的方法,因为没有专门的内置选项来实现这一点。
使用IronPDF,文本和图像添加水印由于其功能强大且易于使用的图像和文本印章工具,在您的PDF文件上添加印章从未如此简单。 WkHtmlToPdf 不包含任何内置的加盖工具,但您仍然可以使用 HTML 和 CSS 来应用加盖内容,从而实现类似的效果。
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")
WkHtmlToPdf C#:
需要额外的库来处理DOCX到PDF的转换。
IronPDF简化了DOCX 转换为 PDF通过强大的DOCX转PDF工具,只需几行代码,最终提高您的项目效率。 WkHtmlToPdf不提供任何内置的DOCX到PDF转换支持,因此您需要寻找能够处理此问题的其他PDF库。
要了解 IronPDF 提供的丰富功能集并查看其实际应用,请查看 IronPDF。如何操作指南深入探讨每个功能,探索其工作原理,并为您提供成为PDF专家所需的技能。
IronPDF拥有不同级别和购买许可证的附加功能。 开发者还可以购买Iron Suite此许可使您可以以两个产品的价格访问所有Iron Software的产品。 如果您还没有准备好购买许可证,IronPDF提供一个免费试用这样您就可以在购买许可证之前探索其提供的所有功能。
IronSuite:您可以通过支付1,498美元获得所有Iron Software产品的访问权限,包括IronPDF, IronOCR, IronWord, IronXL, IronBarcode, IronQR, IronZIP, IronPrint和IronWebScraper.
WkHtmlToPdf 是一个免费使用的开源工具,采用 LGPL 许可证授权,允许您在专有应用程序中使用 wkhtmltopdf,只要您不修改库本身即可。
IronPDF在提供广泛文档和支持方面表现出色:
PDF API 参考: 提供 API 参考,让您充分利用我们的工具所提供的功能。
如需更多信息,请查看IronPDF的广泛内容。文档,并访问IronSoftware YouTube 频道.
总之,IronPDF 和 WkHtmlToPdf 在 C# 中的 PDF 生成和操作方面各具独特优势。 IronPDF以其全面的功能集脱颖而出,包括高级PDF功能,如加密、编辑、数字签名和无缝的DOCX到PDF转换,使其成为开发人员寻找多功能且易于使用的库的强大解决方案。 IronPDF功能丰富且文档齐全,是处理PDF文件的开发者工具包中的强大工具。
另一方面,WkHtmlToPdf 在将 HTML 转换为 PDF 时以简单和高效而著称,特别适合那些追求轻量级、开源解决方案但不需要高级 PDF 操作功能的用户。 尽管缺乏IronPDF的一些更复杂的功能,WkHtmlToPdf的易用性、跨平台支持和零成本使其成为基本PDF生成任务的一个有吸引力的选择。 最终,在IronPDF和WkHtmlToPdf之间的选择将取决于您的项目的具体需求、对高级PDF功能的需求以及您的预算考虑。
您可以尝试 0 天免费试用 查看他们的可用功能。