在实际环境中测试
在生产中测试无水印。
随时随地为您服务。
选择适合您需求的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 拥有不同级别和购买许可证的附加功能。 开发者还可以购买 IronSuite 此许可使您可以以两个产品的价格访问所有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功能的需求以及您的预算考虑。