比较

PDFBolt 与 IronPDF:技术比较指南

PDFBoltvs IronPDF:云 SaaS 与 .NET 中的自托管 PDF 生成。

当 .NET 开发人员需要生成 PDF 文档时,他们面临着一个基本的架构选择:基于云的 SaaS 服务(如 PDFBolt)或自托管库(如 IronPDF)。 本比较在关键技术方面对这两种方法进行了研究,以帮助开发人员、架构师和技术决策者选择适合其 PDF 生成工作流程的工具。

什么是 PDFBolt? PDFBolt 是一个纯云 SaaS 平台,旨在通过外部服务器生成 PDF。 该服务提供了一个 `HtmlToPdfConverter` 类,可将 HTML 内容或 URL 发送到PDFBolt的云基础设施进行处理,并将生成的 PDF 字节返回给您的应用程序。 基于云的架构可通过 API 调用实现快速集成--开发人员安装 NuGet 软件包,获取 API 密钥,然后开始生成 PDF。PDFBolt处理渲染基础结构,无需本地 PDF 生成资源。 然而,这种便利性是有代价的。 每份文档都要通过外部服务器,因此需要考虑数据隐私问题。 免费层限制为每月 100 篇文档,超过此限制后按文档付费。 此外,所有 PDF 生成操作都必须具备网络连接。

什么是 IronPDF? [IronPDF](https://ironpdf.com/) 是一个自托管的 .NET 库,可在您的服务器上本地执行 PDF 生成。 [ChromePdfRenderer](https://ironpdf.com/object-reference/api/IronPdf.ChromePdfRenderer.html) 类使用嵌入式 Chromium 引擎将 HTML、CSS 和 JavaScript 转换为高保真 PDF 文档,无需调用任何外部网络。 该库可在您应用程序的基础架构内处理所有文档。 数据不会离开您的服务器,文件生成也没有使用限制。 一旦获得 License 授权,您就可以生成无限量的 PDF,且无需按文档付费。 IronPDF 提供同步和异步方法,以及基本生成之外的广泛功能--包括 PDF 合并、水印、文本提取和安全设置,这些功能是云 API 通常无法提供的。 ## 架构比较 PDFBolt 和IronPDF的根本区别在于文档处理的位置。 这种区别会影响到从数据隐私到操作可靠性的方方面面。 | 特征 |PDFBolt|IronPDF| |---------|---------|---------| |**托管**|纯云计算|自托管| |**数据位置**|外部服务器|仅限您的服务器| |**隐私**|外部处理的文件|完整的数据隐私,本地处理| |**使用限制**|免费层限制为每月 100 篇|无限制| |**需要互联网**|是的,始终| 否 | |**延迟**|网络往返(秒)|毫秒(本地)| |**离线操作**|不可能|完全支持| |**C#集成**|云 API|直接集成库| |**成本模式**|按文档|一次性购买或订阅| 对于处理敏感文档(合同、医疗记录、财务数据)的应用程序来说,PDFBolt 的纯云计算特性带来了合规性的复杂性。 当文件传输到外部服务器时,GDPR、HIPAA 和 SOC2 审核会变得更加复杂。 ## 基本 HTML 到 PDF 的转换 这两个库都处理 HTML 到 PDF 的转换,但采用不同的 API 模式和返回类型。 **PDFBolt HTML 转 PDF 方法:** ```csharp // NuGet: Install-Package PDFBolt using PDFBolt; using System.IO; class Program { static void Main() { var converter = new HtmlToPdfConverter(); var html = "

Hello World

"; var pdf = converter.ConvertHtmlString(html); File.WriteAllBytes("output.pdf", pdf); } } ``` **IronPDF HTML 转 PDF 方法:** ```csharp // NuGet: Install-Package IronPdf using IronPdf; using System.IO; class Program { static void Main() { var renderer = new ChromePdfRenderer(); var html = "

Hello World

"; var pdf = renderer.RenderHtmlAsPdf(html); pdf.SaveAs("output.pdf"); } } ``` PDFBolt 的 `ConvertHtmlString()` 返回一个 `byte[]` 数组,需要手动调用 `File.WriteAllBytes()` 才能保存。 IronPdf 的 `RenderHtmlAsPdf()` 返回一个 `PdfDocument` 对象,该对象具有便捷的方法(如 `SaveAs()` ),Plus 属性(如用于替代输出处理的 `BinaryData` 和 `Stream` )。 IronPDF 中的 [HTML 到 PDF 的转换](https://ironpdf.com/how-to/html-file-to-pdf/)过程完全在本地执行,每次转换都不会增加网络往返延迟。 ## 将 URL 转换为 PDF. 将网页转换为 PDF 的模式与此类似,但在方法命名和处理方面存在明显差异。 **PDFBolt URL 转 PDF 方法:** ```csharp // NuGet: Install-Package PDFBolt using PDFBolt; using System.IO; class Program { static void Main() { var converter = new HtmlToPdfConverter(); var pdf = converter.ConvertUrl("https://www.example.com"); File.WriteAllBytes("webpage.pdf", pdf); } } ``` **IronPDF URL 转 PDF 方法:** ```csharp // NuGet: Install-Package IronPdf using IronPdf; class Program { static void Main() { var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderUrlAsPdf("https://www.example.com"); pdf.SaveAs("webpage.pdf"); } } ``` IronPDF 提供了一个专门的 [RenderUrlAsPdf](https://ironpdf.com/how-to/url-to-pdf/) 方法,可清楚地指示正在执行的操作。 由此产生的 `PdfDocument` 对象为保存、访问二进制数据或进一步操作提供了相同的丰富接口。 ## 自定义页面大小和页边距 专业文档通常需要特定的页面尺寸和页边距配置。 这两个库都以不同的配置模式支持这些定制。 **PDFBolt页面配置:** ```csharp // NuGet: Install-Package PDFBolt using PDFBolt; using System.IO; class Program { static void Main() { var converter = new HtmlToPdfConverter(); converter.PageSize = PageSize.A4; converter.MarginTop = 20; converter.MarginBottom = 20; var html = File.ReadAllText("input.html"); var pdf = converter.ConvertHtmlString(html); File.WriteAllBytes("output.pdf", pdf); } } ``` **IronPDF页面配置:** ```csharp // NuGet: Install-Package IronPdf using IronPdf; using IronPdf.Rendering; using System.IO; class Program { static void Main() { var renderer = new ChromePdfRenderer(); renderer.RenderingOptions.PaperSize = PdfPaperSize.A4; renderer.RenderingOptions.MarginTop = 20; renderer.RenderingOptions.MarginBottom = 20; var html = File.ReadAllText("input.html"); var pdf = renderer.RenderHtmlAsPdf(html); pdf.SaveAs("output.pdf"); } } ``` PDFBolt 使用转换器对象上的直接属性(`converter.PageSize`, `converter.MarginTop`)。 IronPdf 通过 [RenderingOptions](https://ironpdf.com/how-to/html-headers-footers/) 属性集中管理所有配置,使设置可通过集成开发环境自动完成。 这两个库都以毫米为单位表示页边距,并且都通过枚举支持标准纸张尺寸。 ## API 映射参考 对于考虑将PDFBolt移植到IronPDF的团队,了解 API 映射有助于估算工作量。 ### 核心方法映射 |PDFBolt|IronPDF|备注| |---------|---------|-------| |<代码>new HtmlToPdfConverter()new ChromePdfRenderer()converter.ConvertHtmlString(html)renderer.RenderHtmlAsPdf(html)converter.ConvertUrl(url)renderer.RenderUrlAsPdf(url)File.WriteAllBytes(path,pdf)pdf.SaveAs(路径)字节[] 结果pdf.BinaryDataconverter.PageSize = PageSize.A4renderer.RenderingOptions.PaperSize = PdfPaperSize.A4converter.MarginTop = 20renderer.RenderingOptions.MarginTop = 20converter.MarginBottom = 20renderer.RenderingOptions.MarginBottom = 20converter.MarginLeft = 15renderer.RenderingOptions.MarginLeft = 15converter.MarginRight = 15renderer.RenderingOptions.MarginRight = 15{页码}{总页数}{总页数}{日期}{日期}{标题}{html-title}Install-Package IronPdf