フッターコンテンツにスキップ
移行ガイド

C#でGrabzItからIronPDFに移行する方法

GrabzItからIronPDFへの移行は、コールバックが複雑なクラウドベースのスクリーンショットキャプチャサービスから、選択可能で検索可能なテキストを含む真のベクターPDFを生成するインプロセスライブラリへと、あなたの.NET PDFワークフローを変えます。 このガイドでは、プロの.NET開発者向けに、外部サーバーへの依存、コールバックハンドラ、キャプチャごとの価格設定を排除した、包括的でステップバイステップの移行パスを提供します。

なぜGrabzItからIronPDFへ移行するのか

GrabzItアーキテクチャの問題

GrabzItは、クラウドベースのスクリーンショットとPDFキャプチャサービスです。迅速な統合には便利ですが、基本的なアーキテクチャ上の制限があります:

1.画像ベースの PDF:GrabzItは、テキストを選択できないスクリーンショットベースの PDF (基本的には PDF 形式でラップされた画像) を作成します。 これは、テキスト操作やアクセシビリティを必要とするあらゆるユースケースにおける基本的な制限です。

2.外部処理:すべてのコンテンツは処理のためにGrabzItのサーバーに送信されるため、機密データのプライバシーとコンプライアンスに関する懸念が生じます。 お客様のHTMLコンテンツは、お客様のインフラストラクチャから離脱します。

3.コールバックの複雑さ:GrabzItは、Webhook 処理インフラストラクチャを必要とする非同期コールバック モデルを使用します。 結果を受け取るためにエンドポイントを設定する必要があり、アーキテクチャが複雑になります。

4.キャプチャごとの価格設定:使用量に応じた支払いモデルは規模が大きくなると高額になる可能性があります。 PDFの生成にはコストがかかります。

5.テキスト検索なし: PDF は画像ベースであるため、OCR なしではテキスト検索と抽出は機能しません。つまり、追加の手順とコストがかかります。

6.ファイル サイズが大きい:画像ベースの PDF はベクターベースの PDF よりも大幅に大きく、5 ~ 10 倍になることもあります。

7.ネットワーク依存性:インターネット接続がないと PDF を生成できないため、オフライン シナリオは不可能になります。

8.遅延: PDF を生成するたびに外部サーバーへのネットワーク ラウンドトリップが必要となり、500 ミリ秒~ 5 秒の遅延が発生します。

GrabzItとIronPDFの比較

アスペクトGrabzItIronPDF
PDFタイプ画像ベース(スクリーンショット)真のベクトルPDF
テキストの選択不可全文選択
テキスト検索OCRが必要ネイティブ検索可能
処理場所外部サーバーローカル/プロセス
プライバシー外部送信データデータはローカルのまま
遅延ネットワーク・ラウンドトリップ(500ms~5s)ローカル処理(~100ms)
価格モデルキャプチャ開発者ライセンス
オフライン機能なしはい
ファイルサイズ大規模(画像データ)小(ベクトルデータ)
要コールバックはい(非同期)いいえ(同期/非同期)
CSS/JSサポート制限的フルChromiumエンジン

2025年、2026年まで.NET 10とC# 14の採用を計画しているチームにとって、IronPDFは最新の.NETパターンとネイティブに統合されたローカル処理で、将来を見据えた基盤を提供します。


マイグレーションの複雑さの評価

機能別の見積もり作業

フィーチャー移行の複雑さノート
HTMLからPDFへ低レベルメソッドの直接置換
URLからPDFへ低レベルメソッドの直接置換
HTMLから画像へ低レベルPDFをレンダリングして変換
ページサイズ/余白低レベルプロパティのマッピング
コールバックハンドラ低レベル完全に削除する
透かし低レベルHTMLベースのアプローチ
ヘッダー/フッター中規模テンプレートからHTMLへの変換
認証キー低レベルGrabzItのキーを削除する

パラダイムシフト

このGrabzIt移行における基本的な変化は、非同期コールバックベースのクラウド処理から同期インプロセス生成への変化です。

GrabzIt:   HTMLを送信 → コールバックを待つ → 結果をサーバーから取得
IronPDF:   HTMLをレンダリング → すぐにPDFを取得

始める前に

前提条件

  1. .NETバージョン: IronPDFは.NET Framework 4.6.2以降および.NET Core 3.1以降 / .NET 5/6/7/8/9以降をサポートしています。 2.ライセンスキー: ironpdf.comからIronPDFライセンスキーを取得します。 3.インフラストラクチャの削除を計画する:廃止のためのコールバックハンドラーとWebhookエンドポイントを文書化する

すべてのGrabzItの使用法を特定する。

# FindGrabzItclient usage
grep -r "GrabzItClient\|GrabzIt\." --include="*.cs" .

# Find callback handlers
grep -r "GrabzIt\|grabzit" --include="*.ashx" --include="*.aspx" --include="*.cs" .

# Find configuration
grep -r "APPLICATION_KEY\|APPLICATION_SECRET\|grabzit" --include="*.config" --include="*.json" .
# FindGrabzItclient usage
grep -r "GrabzItClient\|GrabzIt\." --include="*.cs" .

# Find callback handlers
grep -r "GrabzIt\|grabzit" --include="*.ashx" --include="*.aspx" --include="*.cs" .

# Find configuration
grep -r "APPLICATION_KEY\|APPLICATION_SECRET\|grabzit" --include="*.config" --include="*.json" .
SHELL

NuGetパッケージの変更

# Remove GrabzIt
dotnet remove package GrabzIt

# Install IronPDF
dotnet add package IronPdf
# Remove GrabzIt
dotnet remove package GrabzIt

# Install IronPDF
dotnet add package IronPdf
SHELL

クイック スタート マイグレーション

ステップ 1: ライセンス構成の更新

翻訳前 (GrabzIt):

GrabzItは、クライアントのインスタンス化ごとにアプリケーションキーとシークレットを必要とします:

var grabzIt = new GrabzItClient("YOUR_APPLICATION_KEY", "YOUR_APPLICATION_SECRET");
var grabzIt = new GrabzItClient("YOUR_APPLICATION_KEY", "YOUR_APPLICATION_SECRET");
$vbLabelText   $csharpLabel

翻訳後(IronPDF):

// Set once at application startup
IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY";

// Then create renderer without credentials
var renderer = new ChromePdfRenderer();
// Set once at application startup
IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY";

// Then create renderer without credentials
var renderer = new ChromePdfRenderer();
$vbLabelText   $csharpLabel

ステップ 2: 名前空間インポートを更新する

// Before (GrabzIt)
using GrabzIt;
using GrabzIt.Parameters;

// After (IronPDF)
using IronPdf;
// Before (GrabzIt)
using GrabzIt;
using GrabzIt.Parameters;

// After (IronPDF)
using IronPdf;
$vbLabelText   $csharpLabel

完全な API リファレンス

GrabzItClientからIronPDFへのマッピング

GrabzItメソッドIronPDF 同等物ノート
new GrabzItClient(key, secret).new ChromePdfRenderer().認証不要
HTMLToPDF(html)を使用してください。renderer.RenderHtmlAsPdf(html).PDFを直接返す
URLToPDF(url)のようにします。renderer.RenderUrlAsPdf(url)のようにします。PDFを直接返す
HTMLToImage(html)のようにします。<コード>pdf.ToBitmap()</コードレンダリング→変換
Save(callbackUrl)を実行します。pdf.SaveAs(path)のようにします。即戦力
SaveTo(ファイルパス)pdf.SaveAs(filePath).同じ機能
<コード>GetResult(id)<コード></コード該当なしコールバック不要
<コード>GetStatus(id)</コード該当なし同期操作

PDFOptionsからRenderingOptionsへのマッピング。

GrabzIt PDFオプションIronPDF プロパティノート
ページサイズ (A4, レター)<コード>RenderingOptions.PaperSize</コードPdfPaperSize列挙型を使用してください。
<コード>カスタムID</コード該当なし不要
<コード>マージントップ</コードRenderingOptions.MarginTop同じ単位(mm)
<コード>マージンボトム</コードRenderingOptions.MarginBottom同じ単位(mm)

ImageOptionsからIronPDFへのマッピング

GrabzIt ImageOptionsIronPDF 同等物ノート
<コード>フォーマット</コード> (png, jpg)bitmap.Save(path, ImageFormat.Png).ToBitmap()の後
<コード>幅</コードRenderingOptions.ViewPortWidthビューポート幅
<コード>高さ</コードRenderingOptions.ViewPortHeightビューポートの高さ

コード移行の例

例1: 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 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");
    }
}
$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");
    }
}
$vbLabelText   $csharpLabel

この違いは大きい:GrabzItはAPI認証情報(YOUR_APPLICATION_KEY, YOUR_APPLICATION_SECRET)を必要とし、カスタムIDを持つPDFOptionsオブジェクトを作成し、結果は外部サーバーを通して送信される画像ベースのPDFです。 IronPDFのChromePdfRendererは選択可能なテキストを含む真のベクターPDFをローカルに生成します。 その他のレンダリングオプションについては、HTML to PDF documentationを参照してください。

例2: 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");
    }
}
$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");
    }
}
$vbLabelText   $csharpLabel

GrabzItは、オプションオブジェクトを通してPageSize.A4を設定し、外部サーバーと認証する必要があります。 IronPDFのRenderUrlAsPdf()メソッドはURLを直接受け取り、CSSとJavaScriptを完全にサポートしたChromiumエンジンを使ってローカルにレンダリングします。 URLからPDFへの変換の詳細については、こちらをご覧ください。

例3: HTMLから画像への変換

翻訳前 (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");
    }
}
$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);
    }
}
$vbLabelText   $csharpLabel

GrabzItは、フォーマット、幅、高さを設定するためのImageOptionsを備えた専用のHTMLToImage()メソッドを提供します。 IronPDFはまずRenderHtmlAsPdf()でHTMLをPDFにレンダリングし、次にToBitmap()でビットマップに変換することで同じ結果を得ます。 このアプローチでは、1回のレンダー操作でPDFと画像の両方の出力が得られます。


重要な移行に関する注意事項

コールバックは必要ありません。

最も重要なアーキテクチャの変更は、コールバック・ハンドラを完全に削除することです:

// GrabzIt: Async callback pattern
grabzIt.HTMLToPDF(html, options);
grabzIt.Save("https://myserver.com/grabzit-callback");  // Wait for callback...

// Callback handler (separate endpoint)
public class GrabzItHandler : IHttpHandler
{
    public void ProcessRequest(HttpContext context)
    {
        string id = context.Request.QueryString["id"];
        GrabzItClient grabzIt = new GrabzItClient("APP_KEY", "APP_SECRET");
        GrabzItFile file = grabzIt.GetResult(id);
        file.Save("output.pdf");
    }
}

// IronPDF: Synchronous - result immediately available
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");  // Done! なし callback needed.
// GrabzIt: Async callback pattern
grabzIt.HTMLToPDF(html, options);
grabzIt.Save("https://myserver.com/grabzit-callback");  // Wait for callback...

// Callback handler (separate endpoint)
public class GrabzItHandler : IHttpHandler
{
    public void ProcessRequest(HttpContext context)
    {
        string id = context.Request.QueryString["id"];
        GrabzItClient grabzIt = new GrabzItClient("APP_KEY", "APP_SECRET");
        GrabzItFile file = grabzIt.GetResult(id);
        file.Save("output.pdf");
    }
}

// IronPDF: Synchronous - result immediately available
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");  // Done! なし callback needed.
$vbLabelText   $csharpLabel

移行後、すべてのGrabzItコールバックハンドラ.ashxファイル、ハンドラエンドポイント、Webhook設定)を削除してください。

真のベクター PDF

GrabzItは、テキストを選択できない画像ベースのPDFを作成します。 IronPDFは真のベクターPDFを生成します:

// With IronPDF, text extraction works natively
var pdf = PdfDocument.FromFile("document.pdf");
string text = pdf.ExtractAllText();  // Works without OCR!
// With IronPDF, text extraction works natively
var pdf = PdfDocument.FromFile("document.pdf");
string text = pdf.ExtractAllText();  // Works without OCR!
$vbLabelText   $csharpLabel

詳細については、テキスト抽出ドキュメントを参照してください。

ファイルサイズの縮小

ベクターベースのPDFは通常、GrabzItの画像ベースのPDFよりも5~10倍小さくなります。 これにより、ストレージコスト、ダウンロード時間、電子メール添付の実現性が向上します。

API認証情報の削除

GrabzItは、すべての操作にAPI認証情報を必要とします:

// Remove these from configuration
// YOUR_APPLICATION_KEY
// YOUR_APPLICATION_SECRET
// Remove these from configuration
// YOUR_APPLICATION_KEY
// YOUR_APPLICATION_SECRET
$vbLabelText   $csharpLabel

IronPDFはアプリケーション起動時に設定される単一のライセンスキーを使用します。


トラブルシューティング

問題 1: GrabzItClient が見つかりません。

問題:GrabzItを削除した後、 GrabzItClient参照によってコンパイル エラーが発生します。

解決策: ChromePdfRendererに置き換えます:

// Remove:
// var grabzIt = new GrabzItClient("KEY", "SECRET");

// Replace with:
var renderer = new ChromePdfRenderer();
// Remove:
// var grabzIt = new GrabzItClient("KEY", "SECRET");

// Replace with:
var renderer = new ChromePdfRenderer();
$vbLabelText   $csharpLabel

問題2: PDFOptionsが見つかりません

問題:IronPDFにPDFOptionsクラスが存在しません。

解決策: RenderingOptionsプロパティを使用します。

// GrabzIt
var options = new PDFOptions();
options.PageSize = PageSize.A4;

// IronPDF
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
// GrabzIt
var options = new PDFOptions();
options.PageSize = PageSize.A4;

// IronPDF
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
$vbLabelText   $csharpLabel

問題 3: コールバックハンドラはまだ参照されている

問題:アプリケーションはコールバック エンドポイントを想定しています。

解決策:コールバック インフラストラクチャを完全に削除します。 IronPDFは結果を同期的に返します。

問題4:ImageOptionsが見つかりません

問題: ImageOptionsクラスがIronPDFに存在しません。

解決策:最初に PDF にレンダリングしてから変換します。

// GrabzIt
var options = new ImageOptions();
options.Format = ImageFormat.png;
grabzIt.HTMLToImage(html, options);

// IronPDF
var pdf = renderer.RenderHtmlAsPdf(html);
var images = pdf.ToBitmap();
images[0].Save("output.png", System.Drawing.Imaging.ImageFormat.Png);
// GrabzIt
var options = new ImageOptions();
options.Format = ImageFormat.png;
grabzIt.HTMLToImage(html, options);

// IronPDF
var pdf = renderer.RenderHtmlAsPdf(html);
var images = pdf.ToBitmap();
images[0].Save("output.png", System.Drawing.Imaging.ImageFormat.Png);
$vbLabelText   $csharpLabel

移行チェックリスト

移行前

  • コードベース内のすべてのGrabzIt API呼び出しをインベントリする
  • コールバックハンドラーとWebhookエンドポイントを識別する
  • 現在のGrabzItのオプションとテンプレートを文書化する
  • IronPDFライセンスキーを取得する
  • コールバックハンドラーの廃止を計画する

コードの移行

  • IronPdf NuGet パッケージをインストールします: dotnet add package IronPdf -GrabzItNuGet パッケージを削除します: dotnet remove package GrabzIt
  • GrabzItClient ChromePdfRendererに置き換える
  • HTMLToPDF()RenderHtmlAsPdf()に変換する
  • URLToPDF()RenderUrlAsPdf()に変換する
  • Save(callback)SaveAs(path)に置き換えます
  • PDFOptionsからRenderingOptionsへのオプションの更新

インフラストラクチャの移行

  • コールバック ハンドラー ファイル ( .ashxなど) を削除します。
  • 設定からGrabzIt APIキーを削除する
  • Webhook URL 設定を削除する
  • IronPDFライセンスキーを設定に追加
  • ポーリング/ステータスチェックコードを削除する

テスティング

  • HTMLからPDFへの変換テスト
  • URLからPDFへの変換テスト
  • 出力PDFでテキストが選択可能であることを確認する
  • テキスト抽出が機能するかテストする(OCRなし)
  • ファイルサイズが小さいことを確認する
  • ネットワーク遅延のないパフォーマンステスト

移行後

  • GrabzItサブスクリプションをキャンセルする
  • アーカイブコールバックハンドラコード
  • ドキュメントの更新
  • GrabzIt関連のエラーを監視する

カーティス・チャウ
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。