在实际环境中测试
在生产中测试无水印。
随时随地为您服务。
本文由.NET开发领域广受好评的权威Jeff Fritz撰写。
在这篇文章中,Jeff 回顾并比较了 IronPDF 库与 C#.NET 的其他三个主要 PDF 库:Aspose、SyncFusion 和 iTextPdf。
我正在调查开发者使用三款商业PDF管理产品的整体体验,并将其与IronPDF的体验进行比较。 我们将在以下方面比较和评价每个产品:
发布节奏和功能开发
我们将以工具的最终评分卡作为总结。
开发者可以从众多PDF产品中进行选择。 他们如何区分这些产品并为他们的项目选择合适的产品。 C# 开发人员在研究软件工具时主要会查看三个地方:搜索引擎、GitHub 和 NuGet。 我们将在DuckDuckGo(一种私密搜索引擎)上搜索“PDF Software C#”,并在GitHub以及NuGet.org上查找这些PDF工具。 NuGet 是 .NET 包存储库。
产品 | DuckDuckGo | GitHub | NuGet |
---|---|---|---|
IronPDF | 5 | 未找到 | 5 |
阿司匹林 | 22 | 37 | 3 |
同步融合 | 49 | 不适用 | 8 |
iTextPDF | 未找到 | 40 | 7 |
备注: 我将搜索限制在每个服务的前100个结果中,无法在DuckDuckGo上找到IronPDF的GitHub仓库以及iText的网站。 SyncFusion没有用于PDF创建示例的GitHub仓库。
每种产品在其网站上获取产品的方式各不相同。
IronPDF 在首页上设有一个明显的下载按钮
下载按钮指向 NuGet.org 和标准的 .NET 包安装说明。
Aspose 在首页上有一个点击操作,您需要选择一种语言,然后会显示该版本产品的详细信息和一个下载按钮。
然后,Aspose** 会在一个包含 NuGet 说明和几段宣传材料的页面上提示您下载工具
SyncFusion 将其 PDF 管理库归入“文档处理 - PDF”类别。 他们的子网站如下所示:
您必须填写一个表格,在他们的网站上创建一个账户,包括电子邮件地址、电话号码和公司名称。 SyncFusion 通过短信验证您的电子邮件,然后允许您下载其软件的安装程序。 您还可以从 NuGet 安装试用包,但他们说安装程序提供了“完整产品”。 在注册 SyncFusion 网站的几天后,我收到了2封电子邮件和2个电话,提供帮助以开始使用。 电子邮件和电话都带有友好的语气,但我觉得电话有点侵扰性。
iTextPDF 清楚地通过一个产品和一个产品链接表达了这一点:
下载屏幕提供三个下载选项,要求注册时提供电话号码、电子邮件、职位和公司名称。
我发现 iText 提供的选择太多了,不确定该下载什么。 我选择了iText 7,然后被引导到另一个屏幕,可以从九个与PDF相关的产品中选择下载。 再次,我发现这很混乱,让我不确定我的项目需要哪些库和工具。
我收到了 iText 发来的一封后续邮件,里面有一个链接到他们的客户门户网站以及一个生成的密码。 我尝试使用提供的凭证通过他们的门户网站进行访问,但无法进入该网站。
在开发者下载的任何库中,授权将决定他们是否以及如何将产品与他们的项目一起使用。 更宽松的许可证将允许将该工具随移动或桌面应用程序一起提供,而更严格的许可证可以限制使用该工具只能在受保护的服务器上运行。
IronPDF 在首页上提供了一个清晰的按钮,位于“免费 NuGet 下载”按钮旁边,链接到许可条款。 生成的页面非常清楚地显示了涵盖多少开发人员以及产品可以用于多少个项目。 组织拥有办公室的数量有限制。 将软件作为 SaaS 产品或原生应用重新分发需要支付额外的授权费。
Aspose 已经 提供 6 种不同的许可模式,不提供支持、提供支持或提供支持和咨询服务的软件包。 我发现他们的选项相当令人困惑,因为还限制了可以使用该产品的项目类型、获得许可的开发人员数量以及组织的规模。
面向公众的网站项目,包括支持:
包容 | IronPDF | 同步融合 | AsposePDF | iText |
---|---|---|---|---|
1 个网站 1 个开发人员 1 个地点 支持 | $liteLicense | $2,495 | $5,394 | |
10 个网站 10位开发者 10个位置 支持 | $专业许可证 | $13,990 | $28,771 | |
无限网站 支持 | $unlimitedLicense`(无限许可证 | 不适用 | $25,785+ (每年) |
SyncFusion对其文件格式产品收取一次性费用,该产品支持所有.NET应用程序类型。该费用按开发者计费,合同第二年的费率有所减少。 没有基于组织大小或产品使用项目数量的限制。 他们也有免费的 为初创期公司提供社区许可证
iText有几款开源产品,但他们让人觉得你需要购买许可证才能使用该产品。
购买商业许可证的选项会导致一个界面,界面上没有立即列出购买选项。 您必须使用有关您的位置、语言、使用量和您希望使用的产品的信息来完成配置工具。 该工具随后将提供商业许可证的报价。
如果该产品是开源的,我可以不用任何商业支持选项就这样使用吗? “直到你点击它们的页面,这一点才变得明确。” iText 7 社区网站 并发现它受到AGPL许可证的保护,该许可证要求您发布使用该库的应用程序的源代码。 这是一个有趣的选择,但可能会让开发者感到困惑。
在每个产品的不同部署模型中,每个网站承诺不同级别的兼容性。需要进行更多研究以确定与不同托管提供商和托管工具(如Docker)的兼容性。
环境 | IronPDF | 阿司匹林 | 同步融合 | iText |
---|---|---|---|---|
COM | 是的 | |||
.NET框架 | 是的 | 是的 | 是的 | 是的 |
.NET 5 | 是的 | 是的 | 是的 | |
.NET 6 | 是的 | 是的 | 是的 | |
.NET标准 | 是的 | 是的 | 是的 | |
Xamarin | 是的 | 是的 | ||
毛伊岛 | 是的 | |||
Azure | 是的 | |||
AWS | 是的 | 是的 | ||
Mac | 是的 | |||
Linux | 是的 | |||
Docker | 是的 |
Aspose是唯一声称可以与COM应用程序一起工作的产品,这通常是开发者的遗留需求。 iText 在其网站上没有列出支持的平台,通过扫描他们的 NuGet 包显示出支持所指示的平台。 SyncFusion 支持多个用户界面框架,但没有支持特定的运行时版本。 iText 是唯一除了 IronPDF 之外声称支持云服务的产品,广告横幅突出显示了对 AWS 的支持。
我审查了他们网站上列出的每个产品及其“入门”体验。 这是每个产品的“使用该产品构建您的第一款应用程序”的指南。
我能够使用 NuGet 安装并开始使用 IronPDF 的示例版本,并只用了一行代码。 非常方便,且没有使我的系统变得杂乱。
The IronPDF 示例 https://ironpdf.com/ 使用 .NET 6 及更早版本的简单控制台或本地应用程序。 它创建并加载一个新的PDF,其中包含一个简单的“Hello World”文本块,并通过写出文件来完成一个5行代码示例。
样例代码清晰,并且与 .NET 6 / C# 10 格式兼容得很好。 在线代码块具有“复制到剪贴板”按钮,使运行变得轻而易举。
该文件被写入项目下的bin/文件夹中,对于一个快速示例来说,它是有效的。 我希望能在我刚写的代码文件旁边写上说明,因为有些人可能不知道要在bin/文件夹中查找内容。
我必须安装一个大文件,大小为217MB,才能开始在我的系统上使用Aspose库。 这并没有安装任何应用程序,只是将Aspose的库文件放置在磁盘上。
Aspose 的示例位于其文档中的“入门”部分,这使得找到它有些困难。 代码示例在 https://docs.aspose.com/pdf/net/hello-world-example/ 包括一些围绕它的文字说明,解释代码试图做什么,并且与代码中的注释有些重复。
Aspose 示例按照原样无法工作,需要改进。 在我审查他们的产品时,我遇到了以下问题:
我不得不下载一个大约874MB的文件来开始操作,并且安装过程要求我登录到Syncfusion服务器以提取和使用这些库。 安装程序创建了一个“控制面板”应用程序,让我可以在磁盘上浏览多个演示。
SyncFusion 的演示位于其产品页面的中段,网址为 https://www.syncfusion.com/document-processing/pdf-framework/net 带有蓝色背景和浅蓝色文字。 根据Lighthouse的说法,这是低对比度,对一些用户来说不可访问。
我将Syncfusion代码粘贴到Visual Studio中,但无法让Visual Studio为演示代码中提到的对象生成合适的“using语句”。 事实上,当我让Visual Studio尝试定位并生成一个using声明时,它建议我安装一个竞争对手的包:
SyncFusion 示例的代码在屏幕上展示时没有任何作用。 演示代码将PDF写入MemoryStream,这是一个在内存中管理文件内容的对象。 我修改了代码以便将数据写入磁盘上的文件中,并且它正确地生成了一个包含“Hello World”的文件。
iText 演示是在其产品主页中央的清晰代码编辑器中编写的。 https://itextpdf.com/products/itext-7/itext-7-community 与其他演示不同,iText为这段代码包含了一个查看生成的PDF的链接。
我需要从他们的客户门户网站下载一个安装包,注册后的第二天我在早上5点收到了一封电子邮件,里面有注册指令。但提供的凭证无法使用,我转而下载并安装了在NuGet上可用的社区包。
提供的iText7示例代码按原样无法运行。 此代码还缺少一些 using 语句,但一旦添加后,应用程序确实生成了一个 PDF 文件,并将其写入到项目的 bin/ 文件夹中。
此审查部分研究开发者将与库进行的API和互动。 这些工具中的每一个都有几种创建和与PDF文档交互的方式。 让我们来看看每一个。
产品的文档将决定其在开发者中的长期成败。 当他们深入研究并需要更高级的功能时,他们能多快找到相关材料?是否提供了有助于教授这些概念的样本?
在这些产品中的每一个中,我搜索了它们的API文档,以寻找向PDF添加数字签名的功能。
API文档清晰且结构良好,左侧面板有目录,带有实时过滤功能。 顶部右侧的搜索框还包括一个实时过滤器,很快就返回了关于提供签名功能的各个组件的几篇文章。 API 网站具有浅色和深色模式,这是开发者喜欢的一个好功能。
PdfSignature
类文档描述了该对象,但没有包含任何示例代码的链接。 我在ironpdf.com网站上搜索“签名”,找到了引用PdfSignature
对象的示例代码。 https://ironpdf.com/examples/digitally-sign-a-pdf/
Aspose API 文档在我搜索签名时将我链接到了它们的 PdfFileSignature 类。 此页面与IronPDF的页面类似,展示了PdfFileSignature
类的细节,但没有包含任何演示链接或描述如何使用该类。
我回到了Aspose文档基础页面。 https://docs.aspose.com/pdf/net/ 并搜索了签名。 我随后看到了一份相关文章的列表,并点击了“在PDF文件中添加签名”的文章。 https://docs.aspose.com/pdf/net/add-signature-in-pdf/
SyncFusion的PDF文件格式产品的基本文档页面位于 https://help.syncfusion.com/file-formats/pdf/overview 并在他们的网站上点击了几下才找到它。 我不需要远赴而去,因为文档的首页就有那个签名样本。
SyncFusion 网站上没有支持数字签名功能的 API 文档。
iText 的 API 文档非常详尽,是从每个发布版本生成的。 这是您在互联网上其他库中常见的标准外观和感觉。 搜索签名时发现了一些具有出色功能描述的类,但是再次没有找到示例的链接。
我在 iText 网站上搜索签名示例但没有找到,反而看到了几篇宣布新合作伙伴关系的博客文章。
每个工具提供的API都非常详细描述,每个工具都采用自己的方法,让开发者完全掌控创建和管理PDF文档内容的过程。 幸运的是,所有的框架都提供了完整的自动完成提示,当你在像 Visual Studio 或 Visual Studio Code 这样的现代代码编辑器中使用它们的工具时,可以提供出色的行内文档。
IronPDF API利用简化命令(如“RenderHtmlAsPdf”)轻松实现非常复杂和困难的交互,同时还提供深入访问文档的创建、内容布置、安全性、元数据和表单。 作为开发者,这些API“对我思考内容渲染的方式来说很有吸引力”。
IronPDF API 使用的名称和术语清楚表明您正在渲染文档或构建文档。 有些设置中的时间属性是表示毫秒的整数,我更希望使用本地 TimeSpan 类型。 最后,我希望能够提供具有现代流畅配置API的设置和选项类型,如下所示:
var Renderer = new IronPdf.ChromePdfRenderer(options =\> {
RenderDelay = TimeSpan.FromSeconds(1)
});
var Renderer = new IronPdf.ChromePdfRenderer(options =\> {
RenderDelay = TimeSpan.FromSeconds(1)
});
options =\> { RenderDelay = TimeSpan.FromSeconds(1) }
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: var Renderer = new IronPdf.ChromePdfRenderer(options =\> { RenderDelay = TimeSpan.FromSeconds(1) });
Dim Renderer = New IronPdf.ChromePdfRenderer(options)
SyncFusion API 明确且提供了非常详细的控制,指导如何与它们的转换工具进行互动。 这里没有捷径,一切都是必需的,您必须告诉它您正在使用哪些工具,没有默认可用。 设置非常详细,对包括磁盘上WebKit渲染器位置在内的所有内容都有细致的控制。
这种额外的配置虽然在某些安装中不需要,但过去曾为人们带来问题,SyncFusion 承诺在未来版本中不会再是问题。
Aspose API 非常冗长,这让我怀疑他们是否真的在尽力提高开发者的工作效率。 加载网站上的文档所需的配置量令人惊讶,需要10行代码,是SyncFusion的两倍多。 (5).
例如,Aspose没有API让您指定一个URL来获取并转换。
iText的API与Aspose相似,非常详细,并允许直接将不同数据类型写入文档,但如何创建文档的各个部分并不清楚。 由于API的明确性以及文档的低质量,使用iText进行工作至少可以说是困难的。
我接下来想测试每个工具将HTML内容转换为PDF的渲染和速度性能。 我编写了一些可以从这里获取的代码: 我的 GitHub 仓库 您可以查阅相关内容,了解我是如何执行这些测试的。 我也已经 将每个结果的 PDF 副本藏在那里 供您审阅。 我将测试每个产品的:
参考网站非常简单,没有CSS,只有文本、链接和图片。
这是三行简单的代码执行,性能表现不错,耗时835毫秒。 然而,当我打开PDF时,我发现在渲染中没有包括任何图片,使用默认配置的结果令人失望。
在一番探索之后,我了解到可以添加一个渲染延迟,通过这个配置,我能够渲染出一个包含页面上正确图片的PDF文件。
在该工具的测试版本中,渲染的PDF中包含了一个水印。 在完全授权的版本中,此水印不会出现。
SyncFusion 是一次奇怪且令人困惑的旅程。他们的文档提到了多种不同的方法来渲染和传递 HTML 和 PDF,这些方法有不同的版本号和不同的框架,需要不同的代码和配置,以及需要安装二进制工具才能正常工作。
就像IronPDF演示一样,SyncFusion没有为页面渲染图像,并输出了一个边距非常小的PDF。
在该工具的测试版本中,渲染的PDF中包含了一个水印。 在完全授权的版本中,此水印不会出现。
Aspose对于如何使用他们的工具有一套非常清晰的指示。 然而,基于 在其网站上提供将网站转换为 PDF 的说明,他们有一个严重的错误,阻止了该功能的正常工作。 另外,他们的 将网站转换为 PDF 的在线工具 不再运行。
iText的文档不容易找到,我们不得不阅读一本电子书才能找到我们正在寻找的示例代码来运行这个示例。 无需更改代码、无需额外配置,仅需4行代码,我们就生成了一个外观非常好,没有水印且页边距合适的PDF文件。
使用的工具 | 以毫秒为单位的速度(越低越好) |
---|---|
IronPDF | 835ms |
同步融合 | 1799ms |
阿司匹林 | 不适用 |
iText | 2975ms |
对于这个测试,我们使用的是ESPN.com,这是一个包含大量CSS、图片和JavaScript的体育网站。 鉴于Aspose在简单测试中无法正常工作,我们将在未来跳过它们。 我们将使用上次演示中使用的相同代码来创建这些捕获,只需替换网站地址。
参考下面的内容,这是在此测试时ESPN的外观:
顶部的分数和屏幕中间的游戏状态报告使用 JavaScript 放置,所有定位和颜色均使用 CSS3 处理。
IronPDF渲染能够忠实地复制并加载动态内容,但看起来该页面是为移动设备渲染的,内容元素被分解成单独的部分并进行了平铺。
SyncFusion 使用“移动风格”的渲染方式,内容垂直平铺。 然而,我们丢失了几张由ESPN网站动态加载的图片,一些字体格式也丢失了:
在此测试中,iText 无法运行并抛出了 NullReferenceException,导致它无法尝试渲染网站。
使用的工具 | 以毫秒为单位的速度(越低越好) |
---|---|
IronPDF | 835ms |
同步融合 | 1799ms |
阿司匹林 | 不适用 |
iText | 2975ms |
最终测试是基于网站生成一个带有表单输入字段的PDF。我编写的简易通讯注册表单在GitHub仓库中可用,并且在Firefox中使用Bootstrap 5进行渲染,如下所示:
请注意: 州是一个组合框,电话字段是电话字段,电子邮件是电子邮件字段,鞋码是数字字段。
Iron在这次测试中表现出色,快速渲染出与移动友好布局相似的界面,顶部右侧的汉堡菜单按钮证明了这一点。 测试版本中页面上的水印很烦人,但在完全授权的版本中会被移除。
所有文本框字段都被渲染为PDF表单字段,我可以与之交互,除了最后的单选按钮和复选框。 文本框没有像在浏览器中那样具有特定的验证或内容强制执行功能。
SyncFusion渲染出了一个看上去是完整桌面版本的网站,因为页面上没有汉堡菜单按钮。 表单元素显示在屏幕上,看起来像是方块、按钮和框,但它们都不是标凊的PDF数据输入字段。 标题和页脚上的链接虽然被水印遮挡,但仍然可以点击。
iText 是三个框架中渲染内容速度最快的。 然而,速度的提升是有代价的。他们的渲染确实提供了点击后可导航的锚标签,但无法到达原始网站。所有来自bootstrap的格式都丢失了,所有表单字段都被渲染成了普通的框框。
使用的工具 | 以毫秒为单位的速度(越低越好) |
---|---|
IronPDF | 835ms |
同步融合 | 1799ms |
阿司匹林 | 不适用 |
iText | 2975ms |
这些框架中的每一个都有独立的支持能力和发布节奏。 对于一个可行的、正在开发并且不断成长的框架,我们希望看到在线支持可用并且有规律的发布时间表,以更好地支持PDF标准。
From the NuGet 网站看来IronPDF每2-4周发布一次更新。 提供实时聊天和电子邮件支持选项。 建立一个在线论坛或者Discord / Slack服务器,以便与支持人员和IronPDF社区的其他成员交流,这会是个不错的主意。
根据 NuGet, 他们每周更新一次他们的PDF库。 SyncFusion拥有在线论坛和在线支持票务系统。 SyncFusion没有实时聊天支持选项。
根据 NuGetAspose.PDF 每月发布一次。 他们提供免费帮助台、付费帮助台和付费咨询服务。 我没有看到任何实时互动或社区互动。
NuGet 报告显示,iText 每2-3个月更新一次他们的软件包。 他们唯一提供的支持是通过在线JIRA问题跟踪器和一个“联系我们”表格。 没有可用的实时互动或托管论坛。
在本文档的每个部分,我将这些产品相互对比,排名以4为最高。
类别 | IronPDF | 阿司匹林 | 同步融合 | iText |
---|---|---|---|---|
发现 | 3 | 4 | 2 | 1 |
收购 | 4 | 3 | 2 | 1 |
许可 | 3 | 2 | 4 | 1 |
兼容性 | 4 | 1 | 2 | 3 |
入门 | 4 | 1 | 2 | 3 |
应用程序接口 | 4 | 2 | 3 | 1 |
文档 | 4 | 4 | 3 | 2 |
渲染网站 | 4 | 0 | 3 | 2 |
支持 | 3 | 4 | 2 | 1 |
总数 (越高越好) | 33 | 21 | 23 | 15 |
备注