比較

GrabzIt與IronPDF:技術比較指南

當.NET開發人員評估PDF生成解決方案時,GrabzIt作為一種基於雲的截圖和PDF的捕獲服務脫穎而出。 雖然它提供快速的整合,但GrabzIt生成基於圖像的PDF,文中文字不可選,並需要將所有內容發送到外部伺服器進行處理。 IronPDF提供了一種不同的選擇:一個在進程內運行的程式庫,生成包含可選、可搜尋文字的真正矢量PDF——所有處理都在本地完成,無需依賴外部。

這個比較在相關技術維度上看待這兩種解決方案,以幫助專業開發人員和架構師為他們的.NET PDF需求做出明智決策。

了解GrabzIt

GrabzIt是一個付費的SaaS,專門用於截圖和PDF的捕獲服務。 它允許開發人員通過雲API將網頁或HTML內容轉換為PDF。 該服務使用GrabzItClient,其中應用程式金鑰和秘密用於認證。

GrabzIt提供的方法如HTMLToImage()用於圖像生成。 配置使用類似Height屬性。 結果使用Save()帶回呼URL進行異步處理。

該服務的一個關鍵特點是它創建基於圖像的PDF—基本上是用PDF格式包裝的截圖。 這些PDF中的文字不可選,文字搜尋需要OCR處理。 所有內容都發送到GrabzIt's伺服器進行處理,這引入了隱私考量和網絡延遲。

瞭解IronPDF

IronPDF是一個.NET程式庫,可以在進程內運行,生成真正的矢量PDF,內含可選和可搜尋的文字。 該程式庫本地處理所有內容,無需外部伺服器依賴。

IronPDF使用RenderUrlAsPdf()的方法。 配置通過RenderingOptions屬性處理。 對於圖像轉換,渲染後的PDF可使用ToBitmap()進行轉換。 文件使用SaveAs()保存,所有操作均是同步的—不需要回呼處理程式或網絡鉤子。

IronPDF生成矢量化的PDF,其中文字可原生選取和搜尋,無需OCR。 檔案大小比基於圖像的PDF小,並且處理在本地進行,延遲最小。

架構和處理模型比較

這些解決方案之間的根本區別在於其處理架構和輸出格式。

方面GrabzItIronPDF
PDF類型基於圖像(截圖)真正的矢量PDF
文字選取不可能全文字選取
文字搜尋需要OCR原生可搜尋
處理地點外部伺服器本地/進程內
隱私數據發送到外部數據保留在本地
延遲包括網絡往返本地處理
定價模式每次捕獲每開發者授權
離線能力
檔案大小大(圖像數據)小(矢量數據)
需要回呼是(異步模型)否(同步/異步)
CSS/JS支持完整(Chromium引擎)完整的Chromium引擎

API的基於雲架構意味著每次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");
    }
}
Imports GrabzIt
Imports GrabzIt.Parameters
Imports System

Module Program
    Sub Main()
        Dim grabzIt As New GrabzItClient("YOUR_APPLICATION_KEY", "YOUR_APPLICATION_SECRET")
        Dim options As New PDFOptions()
        options.CustomId = "my-pdf"

        grabzIt.HTMLToPDF("<html><body><h1>Hello World</h1></body></html>", options)
        grabzIt.SaveTo("output.pdf")
    End Sub
End Module
$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");
    }
}
Imports IronPdf
Imports System

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()
        Dim pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Hello World</h1></body></html>")
        pdf.SaveAs("output.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

GrabzIt需要創建一個使用應用金鑰和秘密憑據的SaveTo()保存。 內容被發送到其平台的伺服器進行處理。

IronPDF創建一個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");
    }
}
Imports GrabzIt
Imports GrabzIt.Parameters
Imports System

Module Program
    Sub Main()
        Dim grabzIt As New GrabzItClient("YOUR_APPLICATION_KEY", "YOUR_APPLICATION_SECRET")
        Dim options As New PDFOptions()
        options.PageSize = PageSize.A4

        grabzIt.URLToPDF("https://www.example.com", options)
        grabzIt.SaveTo("webpage.pdf")
    End Sub
End Module
$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");
    }
}
Imports IronPdf
Imports System

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()
        Dim pdf = renderer.RenderUrlAsPdf("https://www.example.com")
        pdf.SaveAs("webpage.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

GrabzIt通過URLToPDF()。 該網頁在服務的伺服器上捕獲,並作為基於圖像的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");
    }
}
Imports GrabzIt
Imports GrabzIt.Parameters
Imports System

Module Program
    Sub Main()
        Dim grabzIt As New GrabzItClient("YOUR_APPLICATION_KEY", "YOUR_APPLICATION_SECRET")
        Dim options As 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")
    End Sub
End Module
$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);
    }
}
Imports IronPdf
Imports System
Imports System.Drawing

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()
        Dim pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Hello World</h1></body></html>")
        Dim images = pdf.ToBitmap()
        images(0).Save("output.png", System.Drawing.Imaging.ImageFormat.Png)
    End Sub
End Class
$vbLabelText   $csharpLabel

GrabzIt有專屬的Height的屬性。 圖像在平台的伺服器上生成。

IronPDF首先用ToBitmap()轉換為位圖,返回一個每頁一個的圖像陣列。 單個圖像使用標準的System.Drawing方法保存。 這個兩步驟方法提供了相同的結果,同時將所有處理保持在本地。

IronPDF教程中了解更多關於PDF操作的知識。

API映射參考

對於正在評估GrabzIt遷移或比較功能的開發人員,這個映射顯示了等效操作:

核心方法映射

GrabzIt方法IronPDF等效
new GrabzItClient(key, secret)new ChromePdfRenderer()
HTMLToPDF(html)renderer.RenderHtmlAsPdf(html)
HTMLToPDF(html, options)首先配置RenderingOptions
URLToPDF(url)renderer.RenderUrlAsPdf(url)
URLToPDF(url, options)首先配置RenderingOptions
HTMLToImage(html)pdf.ToBitmap()
Save(callbackUrl)pdf.BinaryData
SaveTo(filePath)pdf.SaveAs(filePath)
GetResult(id)不適用
GetStatus(id)不適用

PDFOptions到RenderingOptions映射

GrabzIt PDFOptionsIronPDF屬性
MarginTopRenderingOptions.MarginTop
MarginBottomRenderingOptions.MarginBottom
MarginLeftRenderingOptions.MarginLeft
MarginRightRenderingOptions.MarginRight
PageSize(A4、Letter)RenderingOptions.PaperSize
OrientationRenderingOptions.PaperOrientation
BrowserWidthRenderingOptions.ViewPortWidth
BrowserHeightRenderingOptions.ViewPortHeight
DelayRenderingOptions.RenderDelay
CustomWaterMarkpdf.ApplyWatermark()
Passwordpdf.SecuritySettings.UserPassword
IncludeBackgroundRenderingOptions.PrintHtmlBackgrounds
TemplateIdRenderingOptions.HtmlHeader/Footer

ImageOptions到IronPDF映射

GrabzIt ImageOptionsIronPDF等效
Format(png、jpg)bitmap.Save(path, ImageFormat.Png)
WidthRenderingOptions.ViewPortWidth
HeightRenderingOptions.ViewPortHeight

功能比較總結

功能GrabzItIronPDF
真正的矢量PDF是(基於Chromium)
可選文字
可搜尋文字(原生)否(需要OCR)
本地處理否(外部伺服器)
離線能力
同步操作受限制(回呼模型)
需要認證是(金鑰/秘密)
HTML到PDF
URL到PDF
HTML到圖像是(原生)是(通過ToBitmap)
文本提取

當團隊考慮從GrabzIt移至IronPDF

開發團隊因為多個原因評估從GrabzIt轉型到IronPDF:

基於圖像的PDF限制: GrabzIt生成截圖形式的PDF,文字不可選—基本上是用PDF格式包裝的圖像。 對於需要文字選擇、複製/粘貼功能或可及性合規的應用,此為一個重大限制。 IronPDF生成真正的矢量PDF,內含完全可選和可搜尋的文字。

外部處理問題:所有發送到服務的內容在其外部伺服器上進行處理。 對於處理敏感數據的應用,此引入了隱私和合規性考量。 IronPDF本地處理所有內容,數據保留在您的基礎設施內。

回呼架構複雜性:API的異步回呼模型要求網絡鉤子處理基礎設施——回呼端點、狀態輪詢和結果檢索邏輯。 IronPDF提供同步操作,即時返回結果,完全消除了回呼處理程式代碼。

大規模每次捕獲定價: GrabzIt的按次付費模式隨著PDF生成量增長變得昂貴。 IronPDF的每開發者授權提供了可預測的成本,無論量如何。

文字搜尋要求:由於GrabzIt的PDF基於圖像,文字搜尋和提取需要單獨的OCR處理。 IronPDF的PDF可原生搜尋,並且文字提取可以直接配合pdf.ExtractAllText()運作。

檔案大小考量:來自GrabzIt的基於圖像PDF的體積比矢量化PDF大很多(5-10倍)。 對於生成多個PDF或有儲存限制的應用,此差異相當大。

網絡依賴性:沒有網絡連接服務無法生成PDF。 IronPDF可離線操作,非常適用於必須在斷開環境中運行的應用。

優勢和考量

GrabzIt的優勢

  • 快速設置:API金鑰整合無需本地依賴
  • 語言無關性:可使用任何能執行HTTP調用的語言
  • 無本地資源:處理在GrabzIt的基礎設施上進行

GrabzIt考慮因素

  • 基於圖像的PDF:不進行OCR的文字不可選或搜尋
  • 外部處理:數據發送到第三方伺服器
  • 回呼複雜性:需要網絡鉤子基礎設施
  • 每次捕獲成本:價格隨著體量增加而規模化
  • 需要網絡:無離線能力
  • 較大檔案:圖像數據大幅增加檔案大小
  • 延遲:每個請求都包含網絡往返

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,通過免費試用,並查看更多詳細文檔,來評估其對您的具體需求是否合適。

請注意GrabzIt是其相關所有人的註冊商標。 本網站無法與GrabzIt關聯、支援或贊助。 所有產品名稱、標誌和品牌均為其各自所有者的財產。 比較僅供信息之用,並反映撰寫時的公開信息。)}]