在实际环境中测试
在生产中测试无水印。
随时随地为您服务。
本文作者杰夫-弗里茨(Jeff Fritz)是.NET 开发领域广受好评的权威。
在本文中,Jeff 回顾并比较了 IronPDF 库与其他三个领先的 C#.NET PDF 库:Aspose、SyncFusion 和 iTextPdf 。
我正在调查与三款面向开发人员的商业 PDF 管理产品交互的整个开发人员体验,并将它们与 IronPDF 的体验进行比较。我们将从以下几个方面对每个产品进行比较和评分:
1.发现和获取经验
2.许可清晰
3.兼容性
4.入门体验
5.C# 开发人员使用应用程序接口的难易程度
6.文档质量,包括代码示例和教程
7.HTML 转 PDF 功能
1.符合 CSS3 标准
2.符合 HTML 5 标准
3.符合 JavaScript 规范
4.支持生成表单
5.渲染保真度
8.技术支持
9.发布节奏和功能开发
最后,我们将对这些工具进行最终评分。
开发人员有大量 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 个结果,结果无法找到IronPDF 的 GitHub 存储库以及 DuckDuckGo 上的iText网站。 SyncFusion没有包含PDF创建示例的GitHub资源库。
每种产品都有不同的网站产品获取方式。
IronPDF 在首页上设置了下载按钮,让用户一目了然
下载按钮指向 NuGet.org 和标准 .NET 软件包安装说明。
Aspose的首页有一个点击页面,在这里你必须选择一种语言,然后就会看到该版本产品的详细信息和一个下载按钮。
然后,Aspose** 会在一个包含 NuGet 说明和几段宣传材料的页面上提示您下载工具
SyncFusion 将其 PDF 管理库归入 "文档处理 - PDF"。他们的子网站如下:
然后,您必须填写一份表格,在其网站上创建一个账户,并提供电子邮件地址、电话号码和公司名称。 SyncFusion会通过短信验证你的电子邮件,然后允许你下载他们软件的安装程序。你也可以从 NuGet 安装试用版软件包,但他们说安装程序提供的是 "完整产品"。在SyncFusion网站注册后的几天里,我收到了两封邮件和两个电话,表示愿意帮助我开始使用。邮件和电话的语气都很友好,但我觉得电话有点咄咄逼人。
iTextPDF用一个产品和一个产品链接就把事情说清楚了:
下载屏幕提供三个下载选项,要求注册时提供电话号码、电子邮件、职位和公司名称。
我发现iText的选择太多了,不知道该下载什么。我选择了 iText 7,然后进入另一个屏幕,从九个 PDF 相关产品中选择要下载的产品。我再次感到困惑,不知道我的项目需要哪些库和工具。
我收到了一封来自iText的后续电子邮件,其中附有一个客户门户网站的链接和一个生成的密码。我尝试使用所提供的凭据使用他们的门户网站,但无法访问该网站。
对于开发人员下载的任何库,许可证都将决定他们是否以及如何在项目中使用该产品。许可证越宽松,工具就越能与移动或桌面应用程序一起发布,而许可证越严格,工具的使用就越受限制,只能在受保护的服务器上运行。
IronPDF在首页的 "免费下载NuGet "按钮旁提供了一个明确的按钮,链接到许可条款。结果页面非常清楚地显示了产品涵盖的开发人员数量和可使用的项目数量。对一个组织的办事处数量有限制。以 SaaS 产品或本地应用程序的形式重新分发软件需要支付额外的许可费用。
安石已 提供 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 列出了对多个用户界面框架的支持,但没有列出具体的运行时版本。 除 IronPDF 外,iText** 是唯一声称支持云服务的产品,其横幅突出了对 AWS 的支持。
我查看了每个产品及其网站上的 "入门 "体验。这就是每款产品的 "使用产品创建您的第一个应用程序 "指南。
我使用 NuGet 和一行代码就安装并开始使用 IronPDF 的示例版本。非常方便,而且不会扰乱我的系统。
IronPDF 样本位于 https://ironpdf.com/ 可与使用 .NET 6 及更早版本的简单控制台或本地应用程序配合使用。它创建并加载了一个带有简单的 "Hello World "文本块的新 PDF,完成了一个 5 行代码示例,并写出了文件。
示例代码清晰明了,可与 .NET 6 / C# 10 格式完美兼容。在线代码块有一个 "复制到剪贴板 "按钮,运行起来非常方便。
该文件被写入项目下的 bin/ 文件夹,对于快速示例而言,它可以正常工作。我希望能把它写在我刚写的代码文件旁边,因为有些人可能不知道在 bin/ 文件夹中查找 content.=
为了在系统中使用 Aspose 库,我不得不安装一个 217MB 大小的大型下载。这并没有安装任何应用程序,只是在磁盘上放置了 Aspose 库。
Aspose 示例在其文档的 "Get Started(开始)"部分,因此比较难找到。代码示例位于 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 statement"。事实上,当我要求 Visual Studio 尝试查找并生成使用语句时,它让我安装一个竞争软件包:
SyncFusion 示例代码在屏幕上什么也没做。演示代码会将 PDF 文件写入 MemoryStream(一个在内存中管理文件内容的对象)。我修改了代码,将其写入磁盘上的文件,结果正确生成了一个包含 "Hello World "的文件。
iText 演示是在其产品主页中间的一个清晰的代码编辑器中编写的。 https://itextpdf.com/products/itext-7/itext-7-community 与其他演示不同的是,iText 提供了一个链接,可以查看该代码生成的 PDF。
我被要求从他们的客户门户网站下载安装包,注册一天后,我在凌晨 5 点收到了一封电子邮件,上面有注册说明。由于证书不起作用,我只好下载并安装了 NuGet 上提供的社区软件包。
为 iText7 提供的示例代码并不能像编写的那样运行。该代码还缺少一些使用语句,但一旦添加了这些语句,应用程序就会生成 PDF 文件并将其写入项目的 bin/ 文件夹。
本评测将对 API 以及开发人员与库之间的交互进行调查。每种工具都有几种创建 PDF 文档并与之交互的方法。让我们逐一了解。
对于开发人员来说,产品的文档是决定其长远发展的关键。当开发人员深入了解并需要更高级的功能时,他们能多快找到相关资料,以及是否提供了有助于教授这些概念的示例。
在每种产品中,我都搜索了它们的 API 文档,以了解在 PDF 中添加数字签名的功能。
API 文档清晰明了,条理清晰,左侧面板的内容表带有实时过滤器。右上方的搜索框也包含一个实时过滤器,可以快速返回几篇关于提供签名功能的各种组件的文章。API 网站有明暗两种模式,这是开发人员喜欢的一个很好的功能。
PdfSignature "类文档描述了该对象,但没有包含任何指向示例代码的链接。我在 ironpdf.com 网站上搜索了 "签名",并在以下位置找到了引用 PdfSignature
对象的示例代码 https://ironpdf.com/examples/digitally-sign-a-pdf/
当我搜索 Signature 时,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 网站上搜索 Signature 样本,但没有找到,而是看到了几篇宣布新合作关系的博客文章
每种工具提供的 API 都具有很强的描述性,而且每种工具都采用了自己的方法,让开发人员能够完全访问 PDF 文档的内容并进行创建和管理。值得庆幸的是,所有这些框架都有完整的自动完成提示,当您在 Visual Studio 或 Visual Studio Code 等提供自动完成功能的现代代码编辑器中使用这些工具时,它们会提供很好的在线文档。
通过 "RenderHtmlAsPdf "等简化命令,IronPDF 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 的应用程序接口非常清晰,对如何与转换器工具进行交互提供了非常详细的说明。这里没有快捷方式,一切都是必需的,你必须告诉它你正在使用哪些工具,没有默认设置。设置 "功能非常广泛,可对一切进行细粒度控制,包括 WebKit 渲染器在磁盘上的位置。
虽然在某些安装中不需要这些额外的配置,但在过去却给用户带来了麻烦,SyncFusion 承诺在未来的版本中将不会出现这样的问题。
Aspose 的应用程序接口非常冗长,这让我怀疑他们是否在试图提高开发人员的工作效率。从网站加载文档所需的配置量令人震惊,10 行代码或者说是 SyncFusion 的两倍。 (5).
其中一个例子是,Aspose 没有允许您指定 URL 以进行获取和转换的 API。
iText 的应用程序接口与 Aspose 相似,非常冗长,允许直接交互,将不同的数据类型写入文档,但不清楚如何创建文档的部分。iText 的应用程序接口非常明确,而文档质量却很低,因此使用 iText 最多只能说是困难重重。
接下来,我想对每种工具将 HTML 内容转换为 PDF 的渲染能力和速度进行测试。我编写了一些代码,可从 我的 GitHub 仓库 您可以查看该网站,了解我是如何进行这些测试的。我还 将每个结果的 PDF 副本藏在那里 供您评测。我会对每件产品进行以下测试
参考网站非常简单,没有 CSS,只有带有链接和图片的文本。
只需执行 3 行代码,性能看起来不错,为 835ms。然而,当我打开 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 标准,我们希望看到在线支持和定期发布时间表。
来自 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 |
备注