比较

GrabzIt 与 IronPDF:技术比较指南

GrabzItvs IronPDF:云截图服务与进程内 .NET 库对比。

当 .NET 开发人员评估 PDF 生成解决方案时,GrabzIt 成为了基于云的屏幕截图和 PDF 捕捉服务。虽然方便快速集成,但GrabzIt创建的基于图像的 PDF 无法选择文本,并且需要将所有内容发送到外部服务器进行处理。 IronPdf 提供了一种与众不同的方法:一个可生成真正矢量 PDF 的进程内库,其中包含可选择、可搜索的文本--所有这些都在本地处理,无需外部依赖。

本比较从技术相关维度对两种解决方案进行了审查,以帮助专业开发人员和架构师针对其 .NET PDF 需求做出明智的决定。

了解 GrabzIt。

GrabzIt 是一款付费 SaaS,专门提供屏幕截图和 PDF 捕捉服务。 它允许开发人员通过云 API 将网页或 HTML 内容转换为 PDF。 该服务使用 GrabzItClient 进行身份验证,并使用应用程序密钥和秘密进行初始化。

GrabzIt 提供了用于 HTML 字符串转换的 HTMLToPDF() 方法、用于网页捕获的 URLToPDF() 方法和用于图像生成的 HTMLToImage() 方法。 配置使用选项类,如带有 CustomIdPageSize 等属性的 PDFOptions 和带有 Format,<代码>宽度</代码和<代码>高度</代码属性的 ImageOptions 。 对于同步文件输出,使用 SaveTo() 保存结果;对于异步处理,使用带有回调 URL 的 Save() 保存结果。

GrabzIt 的一个基本特征是它可以创建基于图像的 PDF,即以 PDF 格式封装的屏幕截图。 这些 PDF 中的文本不可选择,文本搜索需要进行 OCR 处理。 所有内容都要发送到GrabzIt的服务器进行处理,这就需要考虑隐私问题和网络延迟。

了解IronPDF

IronPDF for .NET 是一个.NET 库,可在进程中运行,生成真正的矢量 PDF,并带有可选择和可搜索的文本。 该库可在本地处理所有内容,无需依赖外部服务器。

IronPDF 使用 ChromePdfRenderer 作为其主要的渲染类,并使用 RenderHtmlAsPdf()RenderUrlAsPdf() 等方法。 配置通过 RenderingOptions 属性进行处理。 对于图像转换,可使用 ToBitmap() 转换渲染的 PDF。 使用 SaveAs() 保存文档,所有操作都是同步的,无需回调处理程序或网络钩子。

IronPDF 生成基于矢量的 PDF,其中的文本仍可选择和搜索,无需 OCR。 文件大小小于基于图像的 PDF,处理过程在本地进行,典型延迟时间约为 100-500ms。

架构和处理模型比较

这些解决方案的根本区别在于其处理架构和输出格式。

方面GrabzItIronPDF
PDF类型基于图像(截图)真正的矢量 PDF
文本选择不可能全文选择
文本搜索需要 OCR本地可搜索
处理地点外部服务器本地/流程中
隐私外部发送的数据数据保持本地化
延迟网络往返(500ms-5s)本地处理(~100 毫秒)
定价模式每次捕获每位开发人员许可证
离线能力
文件大小大图(图像数据)小(矢量数据)
需要回电是(异步模型)否(同步/异步)
CSS/JS支持有限的完整的 Chromium 引擎

GrabzIt 基于云的架构意味着每次生成 PDF 都需要对外部服务器进行 HTTP 调用。 这将引入网络延迟、可用性问题和速率限制等考虑因素。IronPDF的流程内方法消除了这些基础设施依赖性。

代码比较:常见的 PDF 操作

HTML 到 PDF 转换

最基本的操作展示了架构和 API 的差异。

GrabzIt:

// NuGet: Install-Package GrabzIt
using GrabzIt;
using GrabzIt.Parameters;
using System;

class Program
{
    static void Main()
    {
        var grabzIt = new GrabzItClient("YOUR_APPLICATION_KEY", "YOUR_APPLICATION_SECRET");
        var options = new PDFOptions();
        options.CustomId = "my-pdf";

        grabzIt.HTMLToPDF("<html><body><h1>Hello World</h1></body></html>", options);
        grabzIt.SaveTo("output.pdf");
    }
}
// NuGet: Install-Package GrabzIt
using GrabzIt;
using GrabzIt.Parameters;
using System;

class Program
{
    static void Main()
    {
        var grabzIt = new GrabzItClient("YOUR_APPLICATION_KEY", "YOUR_APPLICATION_SECRET");
        var options = new PDFOptions();
        options.CustomId = "my-pdf";

        grabzIt.HTMLToPDF("<html><body><h1>Hello World</h1></body></html>", options);
        grabzIt.SaveTo("output.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

IronPDF:

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Hello World</h1></body></html>");
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Hello World</h1></body></html>");
        pdf.SaveAs("output.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

GrabzIt 要求使用应用程序密钥和秘密凭证创建 GrabzItClient ,使用 CustomId 等属性配置 PDFOptions ,使用 HTML 内容和选项调用 HTMLToPDF() ,然后使用 SaveTo() 保存。 翻译内容将发送到GrabzIt的服务器进行处理。

IronPDF 创建了一个 ChromePdfRenderer ,直接使用 HTML 字符串调用 RenderHtmlAsPdf() 并使用 SaveAs() 保存。 该操作在本地处理,无需外部验证。 翻译出来的 PDF 包含真正的矢量文本,可以选择和搜索。

有关高级 HTML 渲染选项,请浏览 HTML 到 PDF 转换指南

URL到PDF转换

实时网页的转换显示了不同配置方法的类似模式。

GrabzIt:

// NuGet: Install-Package GrabzIt
using GrabzIt;
using GrabzIt.Parameters;
using System;

class Program
{
    static void Main()
    {
        var grabzIt = new GrabzItClient("YOUR_APPLICATION_KEY", "YOUR_APPLICATION_SECRET");
        var options = new PDFOptions();
        options.PageSize = PageSize.A4;

        grabzIt.URLToPDF("https://www.example.com", options);
        grabzIt.SaveTo("webpage.pdf");
    }
}
// NuGet: Install-Package GrabzIt
using GrabzIt;
using GrabzIt.Parameters;
using System;

class Program
{
    static void Main()
    {
        var grabzIt = new GrabzItClient("YOUR_APPLICATION_KEY", "YOUR_APPLICATION_SECRET");
        var options = new PDFOptions();
        options.PageSize = PageSize.A4;

        grabzIt.URLToPDF("https://www.example.com", options);
        grabzIt.SaveTo("webpage.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

IronPDF:

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
        pdf.SaveAs("webpage.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
        pdf.SaveAs("webpage.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

GrabzIt 通过 PDFOptions.PageSize = PageSize.A4 配置页面大小,然后使用 URL 和选项调用 URLToPDF() 。 网页由GrabzIt的服务器捕获,并以基于图像的 PDF 格式返回。

IronPDF 使用 URL 字符串直接调用 RenderUrlAsPdf() 。 页面大小可通过 renderer.RenderingOptions.PaperSize 进行配置。 页面使用IronPDF的嵌入式 Chromium 引擎进行本地渲染,生成带有可选文本的矢量 PDF。

HTML 到图像的转换

图像生成演示了处理非 PDF 输出的不同方法。

GrabzIt:

// NuGet: Install-Package GrabzIt
using GrabzIt;
using GrabzIt.Parameters;
using System;

class Program
{
    static void Main()
    {
        var grabzIt = new GrabzItClient("YOUR_APPLICATION_KEY", "YOUR_APPLICATION_SECRET");
        var options = new ImageOptions();
        options.Format = ImageFormat.png;
        options.Width = 800;
        options.Height = 600;

        grabzIt.HTMLToImage("<html><body><h1>Hello World</h1></body></html>", options);
        grabzIt.SaveTo("output.png");
    }
}
// NuGet: Install-Package GrabzIt
using GrabzIt;
using GrabzIt.Parameters;
using System;

class Program
{
    static void Main()
    {
        var grabzIt = new GrabzItClient("YOUR_APPLICATION_KEY", "YOUR_APPLICATION_SECRET");
        var options = new ImageOptions();
        options.Format = ImageFormat.png;
        options.Width = 800;
        options.Height = 600;

        grabzIt.HTMLToImage("<html><body><h1>Hello World</h1></body></html>", options);
        grabzIt.SaveTo("output.png");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

IronPDF:

// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Drawing;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Hello World</h1></body></html>");
        var images = pdf.ToBitmap();
        images[0].Save("output.png", System.Drawing.Imaging.ImageFormat.Png);
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Drawing;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Hello World</h1></body></html>");
        var images = pdf.ToBitmap();
        images[0].Save("output.png", System.Drawing.Imaging.ImageFormat.Png);
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

GrabzIt 有一个专门的 HTMLToImage() 方法,该方法带有 ImageOptions 用于配置 Format,<代码>宽度</代码和<代码>高度</代码属性。 图片由GrabzIt服务器生成。

IronPDF 首先使用 RenderHtmlAsPdf() 将 HTML 渲染为 PDF,然后使用 ToBitmap() 转换为位图,并返回一个图像数组(每页一个)。 单个图像使用标准的 System.Drawing 方法保存。 这种两步走的方法既能达到相同的效果,又能保持所有处理过程的本地化。

IronPDF 教程中了解有关 PDF 操作的更多信息。

API 映射参考

对于评估GrabzIt迁移或比较功能的开发人员,本映射显示了等价操作:

核心方法映射

GrabzIt 方法IronPdf 同等产品备注
<代码>new GrabzItClient(key、secret)</代码<代码>new ChromePdfRenderer()</ 代码无需验证
<代码>HTMLToPDF(html)</代码<代码>renderer.RenderHtmlAsPdf(html)</代码直接返回 PDF
<代码>HTMLToPDF(html, 选项)</代码首先配置 RenderingOptions呈现前设置选项
<代码>URLToPDF(url)</代码<代码>renderer.RenderUrlAsPdf(url)</代码直接返回 PDF
<代码>URLToPDF(url, 选项)</代码首先配置 RenderingOptions呈现前设置选项
<代码>HTMLToImage(html)</代码<代码>pdf.ToBitmap()</代码渲染然后转换
<代码>保存(callbackUrl)</代码<代码>pdf.SaveAs(路径)</代码>或<代码>pdf.BinaryData</代码立竿见影的效果
<代码>SaveTo(文件路径)</代码<代码>pdf.SaveAs(filePath)</代码相同功能
<代码>GetResult(id)</代码不适用无需回调
<代码>GetStatus(id)</代码不适用同步操作

PDFOptions 到 RenderingOptions 映射

GrabzIt PDF 选项IronPdf 属性备注
<代码>页边距</代码<代码>RenderingOptions.MarginTop</代码单位相同(毫米)
<代码>边距下限</代码<代码>RenderingOptions.MarginBottom</代码单位相同(毫米)
<代码>边距左移</代码<代码>RenderingOptions.MarginLeft</代码单位相同(毫米)
<代码>MarginRight</代码<代码>RenderingOptions.MarginRight</代码单位相同(毫米)
<代码>页面大小</代码>(A4、Letter)<代码>RenderingOptions.PaperSize</代码使用 PdfPaperSize 枚举
<代码>方向</代码<代码>RenderingOptions.PaperOrientation</代码<代码>肖像</代码>或<代码>风景</代码
<代码>浏览器宽度</代码<代码>RenderingOptions.ViewPortWidth</代码视口宽度(像素
<代码>浏览器高度</代码<代码>RenderingOptions.ViewPortHeight</代码视口高度(像素
<代码>延迟</代码<代码>RenderingOptions.RenderDelay</代码以毫秒为单位
<代码>CustomWaterMark</代码<代码>pdf.ApplyWatermark()</代码渲染后
<代码>密码</代码<代码>pdf.SecuritySettings.UserPassword</代码渲染后
<代码>包含背景</代码<代码>RenderingOptions.PrintHtmlBackgrounds</代码布尔
<代码>模板 ID</ 代码<代码>RenderingOptions.HtmlHeader/Footer</代码使用 HTML 模板

ImageOptions 到IronPDF的映射

GrabzIt 图像选项IronPdf 同等产品备注
<代码>格式</代码> (png, jpg)<代码>bitmap.Save(路径,ImageFormat.Png)</代码ToBitmap() 之后
<代码>宽度</代码<代码>RenderingOptions.ViewPortWidth</代码或调整位图大小
<代码>高度</代码<代码>RenderingOptions.ViewPortHeight</代码或调整位图大小

功能对比摘要

特征GrabzItIronPDF
真正的矢量 PDF❌(基于图像)
可选文本
可搜索文本(本地)❌(需要 OCR)
本地处理❌(外部服务器)
离线能力
同步操作⚠️(回调模型)
需要验证✅(密钥/机密)
HTML 至 PDF
URL 至 PDF
HTML 至图像✅(本地)✅(通过 ToBitmap)
文本提取❌(无 OCR)

团队何时考虑从GrabzIt迁移到 IronPDF?

开发团队评估从GrabzIt过渡到IronPDF有几个原因:

基于图像的 PDF 限制:GrabzIt 可创建基于屏幕截图的 PDF,其中文本不可选,基本上是以 PDF 格式封装的图像。 对于需要文本选择、复制/粘贴功能或可访问性合规性的应用程序来说,这是一个很大的限制。IronPDF可生成真正的矢量 PDF,文本可完全选择和搜索。

外部处理问题:发送到GrabzIt的所有内容都将在其外部服务器上进行处理。 对于处理敏感数据的应用程序,这就需要考虑隐私和合规性问题。IronPDF在本地处理所有内容,将数据保存在您的基础架构内。

回调架构复杂性:GrabzIt 的异步回调模型需要 webhook 处理基础设施--回调端点、状态轮询和结果检索逻辑。IronPDF提供可立即返回结果的同步操作,完全消除了回调处理程序代码。

按捕获量定价:GrabzIt 的按使用付费模式会随着 PDF 生成量的增加而变得昂贵。IronPDF的按开发人员许可协议提供了可预测的成本,无论数量多少。

文本搜索要求:由于GrabzItPDF 基于图像,文本搜索和提取需要单独的 OCR 处理。IronPDFPDF 本机可搜索,文本提取可直接使用 pdf.ExtractAllText() 进行。

文件大小问题:GrabzIt 基于图像的 PDF 要比基于矢量的 PDF 大得多(5-10 倍)。 对于生成大量 PDF 或存储空间有限的应用程序来说,这种差异是巨大的。

网络依赖性:如果没有互联网连接,GrabzIt 无法生成 PDF。IronPDF可以离线工作,这对于必须在断开环境中运行的应用程序来说至关重要。

优势和考虑因素

GrabzIt的优势

  • 快速设置:集成 API 密钥,无需本地依赖性
  • 语言无关性:适用于任何可进行 HTTP 调用的语言
  • 无本地资源:在GrabzIt的基础架构上进行处理

GrabzIt注意事项

  • 基于图像的 PDF:没有 OCR 就无法选择或搜索文本
  • 外部处理:发送到第三方服务器的数据
  • 回调复杂性:需要网络钩子基础设施
  • 每次捕获成本:定价与数量挂钩
  • 网络要求:无离线功能
  • 更大的文件:图像数据会显著增加文件大小
  • 延迟:每次请求的网络往返时间增加 500ms-5s

IronPDF的优势

  • 真正的矢量 PDF:可选择、可搜索的文本
  • 本地处理:数据保留在您的基础架构中
  • 同步操作:无需回调处理程序
  • 更小的文件:矢量数据可将文件大小缩小 5-10 倍
  • 文本提取:无需 OCR 的本地文本提取
  • 离线功能:无需连接互联网即可使用
  • 全面的资源:广泛的教程文档

IronPDF注意事项

  • 本地资源:使用本地 CPU/内存进行处理
  • 商业许可:生产使用要求

结论

GrabzIt 和IronPDF代表了在 .NET 应用程序中生成 PDF 的根本不同方法。GrabzIt基于云的屏幕截图服务通过外部 API 调用创建基于图像的 PDF,需要进行身份验证、回调处理,并接受输出中文本不可选。

IronPDF 提供了一种流程内替代方案,可生成真正的矢量 PDF,并带有可选择、可搜索的文本。 该库消除了外部依赖性、回调基础架构和网络延迟,同时生成支持本地文本提取的较小文件。

随着企业对 .NET 10、C# 14 以及 2026 年之前的应用程序开发进行规划,在基于图像的云 PDF 和真正的矢量本地 PDF 之间做出选择,将极大地影响文档的可用性、可访问性和基础架构的复杂性。 需要可选择文本、数据隐私或简化架构的团队会发现IronPDF能有效满足这些要求。

通过免费试用开始评估 IronPDF,并浏览全面的文档以评估是否适合您的特定需求。