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小,並且處理在本地進行,延遲最小。
架構和處理模型比較
這些解決方案之間的根本區別在於其處理架構和輸出格式。
| 方面 | GrabzIt | IronPDF |
|---|---|---|
| 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 ModuleIronPDF:
// 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 ClassGrabzIt需要創建一個使用應用金鑰和秘密憑據的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 ModuleIronPDF:
// 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 ClassGrabzIt通過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 ModuleIronPDF:
// 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 ClassGrabzIt有專屬的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 PDFOptions | IronPDF屬性 |
|---|---|
MarginTop | RenderingOptions.MarginTop |
MarginBottom | RenderingOptions.MarginBottom |
MarginLeft | RenderingOptions.MarginLeft |
MarginRight | RenderingOptions.MarginRight |
PageSize(A4、Letter) | RenderingOptions.PaperSize |
Orientation | RenderingOptions.PaperOrientation |
BrowserWidth | RenderingOptions.ViewPortWidth |
BrowserHeight | RenderingOptions.ViewPortHeight |
Delay | RenderingOptions.RenderDelay |
CustomWaterMark | pdf.ApplyWatermark() |
Password | pdf.SecuritySettings.UserPassword |
IncludeBackground | RenderingOptions.PrintHtmlBackgrounds |
TemplateId | RenderingOptions.HtmlHeader/Footer |
ImageOptions到IronPDF映射
| GrabzIt ImageOptions | IronPDF等效 |
|---|---|
Format(png、jpg) | bitmap.Save(path, ImageFormat.Png) |
Width | RenderingOptions.ViewPortWidth |
Height | RenderingOptions.ViewPortHeight |
功能比較總結
| 功能 | GrabzIt | IronPDF |
|---|---|---|
| 真正的矢量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的優勢
IronPDF的考量
- 本地資源:使用本地CPU/記憶體進行處理
- 商業授權:生產使用需要商業授權
結論
GrabzIt和IronPDF代表了NET應用中PDF生成的根本不同方法。 GrabzIt的基於雲的截圖服務通過外部API調用創建基於圖像的PDF,需要認證、回呼處理,以及接受文字無法在輸出中選擇的情況。
IronPDF提供了一個在進程內運行的替代方案,生成真正的矢量PDF,其中文字可選可搜尋。 該程式庫消除了外部依賴性、回呼基礎設施和網絡延遲,同時生成支持原生文字提取的小型檔案。
隨著組織為.NET 10、C# 14和至2026年的應用開發進行規劃,選擇基於圖像的雲PDF或真正的矢量本地PDF對於文件的可用性、可及性和基礎設施複雜性有重大影響。 需要可選文字、數據隱私或簡化架構的團隊會發現IronPDF能有效滿足這些要求。
開始評估IronPDF,通過免費試用,並查看更多詳細文檔,來評估其對您的具體需求是否合適。
