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

C#でGdPicture.NET SDKからIronPDFに移行する方法

GdPicture.NETSDKからIronPDFへの移行:完全なC#移行ガイド

GdPicture.NETSDKからIronPDFへの移行は、.NET開発者にPDF生成への集中した合理的なアプローチを提供します。 このガイドは、複雑なドキュメントイメージングSDKのパターンを、現代の.NET開発用に設計された最新のPDF固有のAPIに置き換える、包括的でステップバイステップの移行パスを提供します。

GdPicture.NETSDKからIronPDFへ移行する理由

GdPicture.NETのSDKの課題

GdPicture.NET SDK(現在はNutrientとしてリブランド)は、包括的なドキュメントイメージングSDKで、PDFに特化した開発にはいくつかの課題があります:

1.PDFのみのプロジェクトのためのオーバーキル:GdPicture.NET SDKは、OCR、BarCode認識、スキャン、画像処理を含む完全なドキュメントイメージングスイートです。 PDFの機能だけが必要な場合、決して使わない機能のためにお金を払うことになります。

2.複雑なライセンス:複数の製品層(GdPicture.NET 14、GdPicture.API、Ultimate、Professional)があり、SKUの組み合わせや年間サブスクリプション要件がわかりにくい。

3.エンタープライズ価格:ライセンス費用は、PDFプラグインのみで2,999ドルから始まり、Ultimateエディションでは10,000ドル以上になります。 開発者ごとのライセンスは、成長するチームにとって大きなオーバーヘッドとなります。

4.急な学習曲線:APIは、最新の.NETパターンではなく、ドキュメントイメージングのコンセプトに基づいて設計されています。 LicenseManager.RegisterKEY()GdPictureStatus 列挙チェック、1-indexed ページなどのメソッドは、現代の C# 慣例と比べると古く感じます。

5.ステータス コード パターン: すべての操作はGdPictureStatus列挙型を返し、チェックする必要があります。

6.手動リソース管理:明示的なDispose()またはRelease()呼び出しが必要です。 SDKは、標準的な.NETの廃棄パターンにきれいに従っていません。

7.バージョンロックイン:名前空間GdPicture14にはバージョン番号が含まれているため、メジャーバージョンのアップグレードにはコードベース全体の名前空間の変更が必要になります。

8.リブランディングの混乱:最近"Nutrient"にリブランディングされたことで、gdpicture.comとnutrient.ioの間でドキュメントが分断され、サポートや学習が複雑になっています。

GdPicture.NETSDKとIronPDFの比較

アスペクトGdPicture.NET SDKIronPDF
フォーカス文書画像処理スイート(PDFはやりすぎ)PDF専用ライブラリ
価格2,999~10,000ドル以上のエンタープライズ層競争力があり、ビジネスと連動する
APIスタイルステータスコード、マニュアル管理例外、IDisposable、モダン.NET
学習曲線Steep(画像処理SDKのコンセプト)シンプルなもの(HTML/CSSに精通していること)
HTMLレンダリング基本的な内部エンジン最新のChromiumとCSS3/JS
ページインデックス1-indexed0-インデックス(標準.NET)
スレッドの安全性手動同期が必要スレッドセーフ設計
名前空間バージョン固有 (<コード>GdPicture14</コード>)安定 (<コード>IronPdf</コード>)

2025年、2026年まで.NET 10とC# 14の採用を計画しているチームにとって、IronPDFは最新の.NETパターンと規約に沿った将来を見据えた基盤を提供します。


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

機能別の見積もり作業

フィーチャー移行の複雑さノート
HTMLからPDFへ低レベルダイレクトメソッドマッピング
URLからPDFへ低レベルダイレクトメソッドマッピング
PDFのマージ低レベル類似のAPIパターン
PDFの分割低レベル類似のAPIパターン
透かし低レベル異なるアプローチ(HTMLベース)
テキスト抽出低レベルプロパティ対メソッド
パスワード保護中規模異なるパラメータ構造
フォームフィールド中規模APIの違い
デジタル署名中・高さまざまな証明書の取り扱い
OCR高いIronOCRは別の製品です。
バーコード認識該当なしIronPDFではサポートされていません。

移行の決定マトリックス

お客様の状況推奨
PDFのみの操作移行-大幅な簡素化とコスト削減
OCRの多用IronOCRをコンパニオンプロダクトとしてご検討ください。
バーコード/スキャンのニーズこれらの機能にはGdPicture.NET SDKを、PDFにはIronPDFを使用してください。
フルドキュメントイメージングすべての機能を実際に使用するかどうかを評価する

始める前に

前提条件

1..NETバージョン: IronPDFは.NET Framework 4.6.2+と.NET Core 2.0+ / .NET 5/6/7/8/9+をサポートしています。 2.ライセンスキーironpdf.comからIronPDFライセンスキーを取得してください。 3.バックアップ:移行作業用のブランチを作成する

すべてのGdPicture.NET SDKの使用法を特定する。

# Find allGdPicture.NET SDKreferences in your codebase
grep -r "GdPicture14\|GdPicturePDF\|GdPictureDocumentConverter\|GdPictureStatus\|LicenseManager\.RegisterKEY" --include="*.cs" .

# Find all GdPicture package references
grep -r "GdPicture" --include="*.csproj" .
# Find allGdPicture.NET SDKreferences in your codebase
grep -r "GdPicture14\|GdPicturePDF\|GdPictureDocumentConverter\|GdPictureStatus\|LicenseManager\.RegisterKEY" --include="*.cs" .

# Find all GdPicture package references
grep -r "GdPicture" --include="*.csproj" .
SHELL

NuGetパッケージの変更

# RemoveGdPicture.NET SDKpackages
dotnet remove package GdPicture.NET.14
dotnet remove package GdPicture.NET.14.API
dotnet remove package GdPicture
dotnet remove package GdPicture.API

# Install IronPDF
dotnet add package IronPdf
# RemoveGdPicture.NET SDKpackages
dotnet remove package GdPicture.NET.14
dotnet remove package GdPicture.NET.14.API
dotnet remove package GdPicture
dotnet remove package GdPicture.API

# Install IronPDF
dotnet add package IronPdf
SHELL

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

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

以前(GdPicture.NET SDK):

// Must be called before anyGdPicture.NET SDKoperations
LicenseManager.RegisterKEY("YOUR-GDPICTURE-LICENSE-KEY");
// Must be called before anyGdPicture.NET SDKoperations
LicenseManager.RegisterKEY("YOUR-GDPICTURE-LICENSE-KEY");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

翻訳後(IronPDF):

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

// Or in appsettings.json:
// { "IronPdf.License.LicenseKey": "YOUR-LICENSE-KEY" }
// Set once at application startup
IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY";

// Or in appsettings.json:
// { "IronPdf.License.LicenseKey": "YOUR-LICENSE-KEY" }
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

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

// Before (GdPicture.NET SDK)
using GdPicture14;

// After (IronPDF)
using IronPdf;
using IronPdf.Editing;
// Before (GdPicture.NET SDK)
using GdPicture14;

// After (IronPDF)
using IronPdf;
using IronPdf.Editing;
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

ステップ 3: 基本的な変換パターン

GdPicture.NET SDKの移行における最も大きな変更点は、冗長なステータスチェックのパターンをなくしたことです:

以前(GdPicture.NET SDK):

using GdPicture14;

LicenseManager.RegisterKEY("LICENSE-KEY");

using (GdPictureDocumentConverter converter = new GdPictureDocumentConverter())
{
    GdPictureStatus status = converter.LoadFromHTMLString("<h1>Hello World</h1>");

    if (status == GdPictureStatus.OK)
    {
        status = converter.SaveAsPDF("output.pdf");

        if (status != GdPictureStatus.OK)
        {
            Console.WriteLine($"Error: {status}");
        }
    }
    else
    {
        Console.WriteLine($"Load error: {status}");
    }
}
using GdPicture14;

LicenseManager.RegisterKEY("LICENSE-KEY");

using (GdPictureDocumentConverter converter = new GdPictureDocumentConverter())
{
    GdPictureStatus status = converter.LoadFromHTMLString("<h1>Hello World</h1>");

    if (status == GdPictureStatus.OK)
    {
        status = converter.SaveAsPDF("output.pdf");

        if (status != GdPictureStatus.OK)
        {
            Console.WriteLine($"Error: {status}");
        }
    }
    else
    {
        Console.WriteLine($"Load error: {status}");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

翻訳後(IronPDF):

using IronPdf;

IronPdf.License.LicenseKey = "LICENSE-KEY";

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
pdf.SaveAs("output.pdf");
using IronPdf;

IronPdf.License.LicenseKey = "LICENSE-KEY";

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
pdf.SaveAs("output.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

主な違い:

  • ステータスチェックなし-エラー時の例外処理
  • レンダラーの明示的な廃棄は不要
  • 最新の流暢なAPI
  • Chromiumベースのレンダリングにより、HTML/CSSのサポートが向上しました。

完全な API リファレンス

名前空間マッピング

GdPicture.NET SDKIronPDF
<コード>GdPicture14</コードIronPdf(アイアンPDF
<コード>GdPicture14.PDF</コードIronPdf(アイアンPDF
<コード>GdPicture14.Imaging</コード該当なし(不要)

コア クラス マッピング

GdPicture.NET SDKIronPDF翻訳内容
<コード>GdPicturePDF</コード<コード>PdfDocument</コード主なPDF文書クラス
<コード>GdPictureDocumentConverter</コード<コード>ChromePdfRenderer</コードHTML/URLからPDFへの変換
LicenseManager(ライセンスマネージャIronPdf.ライセンスライセンス管理
<コード>GdPictureStatus</コード例外エラー処理

ドキュメント読み込み方法

GdPicture.NET SDKIronPDFノート
pdf.LoadFromFile(path, loadInMemory).PdfDocument.FromFile(パス)ファイルから読み込む
pdf.LoadFromFile(path, password, loadInMemory).PdfDocument.FromFile(path, password).パスワードで保護
converter.LoadFromHTMLString(html).renderer.RenderHtmlAsPdf(html).HTML文字列
converter.LoadFromURL(url).renderer.RenderUrlAsPdf(url)のようにします。URL

ページ操作

GdPicture.NET SDKIronPDFノート
<コード>pdf.GetPageCount()</コード<コード>pdf.PageCount</コードページ数を取得
<コード>pdf.SelectPage(pageNo)</コード<コード>pdf.Pages[index]</コードページを選択(1インデックス vs 0インデックス)
<コード>pdf.GetPageWidth()</コード<コード>pdf.Pages[i].Width</コードページ幅
<コード>pdf.GetPageHeight()</コード<コード>pdf.Pages[i].Height</コードページの高さ

マージと分割の操作

GdPicture.NET SDKIronPDFノート
pdf1.MergePages(pdf2).PdfDocument.Merge(pdf1, pdf2).PDFをマージ
pdf.ExtractPages(start, end).pdf.CopyPages(indices)を使用してください。ページの抜粋

ウォーターマークの操作

GdPicture.NET SDKIronPDFノート
pdf.DrawText(..)ループpdf.ApplyWatermark(html).テキスト透かし.
pdf.SetTextColor(color)のようにします。CSSスタイリングテキストの色を設定
<コード>pdf.SetTextSize(size)</コードCSSスタイリングテキストサイズの設定

コード移行の例

例1: HTMLからPDFへの変換

以前(GdPicture.NET SDK):

// NuGet: Install-Package GdPicture.NET
using GdPicture14;
using System;

class Program
{
    static void Main()
    {
        using (GdPictureDocumentConverter converter = new GdPictureDocumentConverter())
        {
            string htmlContent = "<html><body><h1>Hello World</h1></body></html>";
            GdPictureStatus status = converter.LoadFromHTMLString(htmlContent);

            if (status == GdPictureStatus.OK)
            {
                converter.SaveAsPDF("output.pdf");
            }
        }
    }
}
// NuGet: Install-Package GdPicture.NET
using GdPicture14;
using System;

class Program
{
    static void Main()
    {
        using (GdPictureDocumentConverter converter = new GdPictureDocumentConverter())
        {
            string htmlContent = "<html><body><h1>Hello World</h1></body></html>";
            GdPictureStatus status = converter.LoadFromHTMLString(htmlContent);

            if (status == GdPictureStatus.OK)
            {
                converter.SaveAsPDF("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();
        string htmlContent = "<html><body><h1>Hello World</h1></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

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

IronPdfのChromePdfRendererは正確なHTML/CSSレンダリングのために最新のChromiumエンジンを使用し、ステータスコードのチェックを不要にしています。 HTMLレンダリングのオプションについては、HTML to PDF documentationを参照してください。

例2: 複数のPDFをマージする

以前(GdPicture.NET SDK):

// NuGet: Install-Package GdPicture.NET
using GdPicture14;
using System;

class Program
{
    static void Main()
    {
        using (GdPicturePDF pdf1 = new GdPicturePDF())
        using (GdPicturePDF pdf2 = new GdPicturePDF())
        {
            pdf1.LoadFromFile("document1.pdf", false);
            pdf2.LoadFromFile("document2.pdf", false);

            pdf1.MergePages(pdf2);
            pdf1.SaveToFile("merged.pdf");
        }
    }
}
// NuGet: Install-Package GdPicture.NET
using GdPicture14;
using System;

class Program
{
    static void Main()
    {
        using (GdPicturePDF pdf1 = new GdPicturePDF())
        using (GdPicturePDF pdf2 = new GdPicturePDF())
        {
            pdf1.LoadFromFile("document1.pdf", false);
            pdf2.LoadFromFile("document2.pdf", false);

            pdf1.MergePages(pdf2);
            pdf1.SaveToFile("merged.pdf");
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

翻訳後(IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        var pdf1 = PdfDocument.FromFile("document1.pdf");
        var pdf2 = PdfDocument.FromFile("document2.pdf");

        var merged = PdfDocument.Merge(new List<PdfDocument> { pdf1, pdf2 });
        merged.SaveAs("merged.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        var pdf1 = PdfDocument.FromFile("document1.pdf");
        var pdf2 = PdfDocument.FromFile("document2.pdf");

        var merged = PdfDocument.Merge(new List<PdfDocument> { pdf1, pdf2 });
        merged.SaveAs("merged.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

IronPDFの静的なMergeメソッドはドキュメントのリストを受け付けます。 PDFのマージと分割については、こちらをご覧ください。

例3: すべてのページに透かしを追加する

以前(GdPicture.NET SDK):

// NuGet: Install-Package GdPicture.NET
using GdPicture14;
using System;
using System.Drawing;

class Program
{
    static void Main()
    {
        using (GdPicturePDF pdf = new GdPicturePDF())
        {
            pdf.LoadFromFile("input.pdf", false);

            for (int i = 1; i <= pdf.GetPageCount(); i++)
            {
                pdf.SelectPage(i);
                pdf.SetTextColor(Color.Red);
                pdf.SetTextSize(48);
                pdf.DrawText("CONFIDENTIAL", 200, 400);
            }

            pdf.SaveToFile("watermarked.pdf");
        }
    }
}
// NuGet: Install-Package GdPicture.NET
using GdPicture14;
using System;
using System.Drawing;

class Program
{
    static void Main()
    {
        using (GdPicturePDF pdf = new GdPicturePDF())
        {
            pdf.LoadFromFile("input.pdf", false);

            for (int i = 1; i <= pdf.GetPageCount(); i++)
            {
                pdf.SelectPage(i);
                pdf.SetTextColor(Color.Red);
                pdf.SetTextSize(48);
                pdf.DrawText("CONFIDENTIAL", 200, 400);
            }

            pdf.SaveToFile("watermarked.pdf");
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

翻訳後(IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Editing;

class Program
{
    static void Main()
    {
        var pdf = PdfDocument.FromFile("input.pdf");

        pdf.ApplyWatermark("<h1 style='color:red;'>CONFIDENTIAL</h1>", 50, VerticalAlignment.Middle, HorizontalAlignment.Center);

        pdf.SaveAs("watermarked.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Editing;

class Program
{
    static void Main()
    {
        var pdf = PdfDocument.FromFile("input.pdf");

        pdf.ApplyWatermark("<h1 style='color:red;'>CONFIDENTIAL</h1>", 50, VerticalAlignment.Middle, HorizontalAlignment.Center);

        pdf.SaveAs("watermarked.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

GdPicture.NET SDKは、座標ベースのテキスト描画からHTMLベースの電子透かしへの移行により、コードを大幅に簡素化します。 IronPDFのApplyWatermarkメソッドはHTML/CSSスタイリングを使用し、手作業によるページの反復や座標計算を不要にします。 その他のオプションについては、watermarking documentationの全文をご覧ください。

例4: パスワード保護とセキュリティ

以前(GdPicture.NET SDK):

using GdPicture14;

class Program
{
    static void Main()
    {
        LicenseManager.RegisterKEY("LICENSE-KEY");

        using (GdPicturePDF pdf = new GdPicturePDF())
        {
            GdPictureStatus status = pdf.LoadFromFile("document.pdf", false);

            if (status != GdPictureStatus.OK) return;

            // Save with encryption - many boolean parameters
            status = pdf.SaveToFile(
                "protected.pdf",
                PdfEncryption.PdfEncryption256BitAES,
                "user123",      // User password
                "owner456",     // Owner password
                true,           // Can print
                false,          // Cannot copy
                false,          // Cannot modify
                false,          // Cannot add notes
                true,           // Can fill forms
                false,          // Cannot extract
                false,          // Cannot assemble
                true            // Can print high quality
            );
        }
    }
}
using GdPicture14;

class Program
{
    static void Main()
    {
        LicenseManager.RegisterKEY("LICENSE-KEY");

        using (GdPicturePDF pdf = new GdPicturePDF())
        {
            GdPictureStatus status = pdf.LoadFromFile("document.pdf", false);

            if (status != GdPictureStatus.OK) return;

            // Save with encryption - many boolean parameters
            status = pdf.SaveToFile(
                "protected.pdf",
                PdfEncryption.PdfEncryption256BitAES,
                "user123",      // User password
                "owner456",     // Owner password
                true,           // Can print
                false,          // Cannot copy
                false,          // Cannot modify
                false,          // Cannot add notes
                true,           // Can fill forms
                false,          // Cannot extract
                false,          // Cannot assemble
                true            // Can print high quality
            );
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

翻訳後(IronPDF):

using IronPdf;

class Program
{
    static void Main()
    {
        var pdf = PdfDocument.FromFile("document.pdf");

        // Configure security settings with clear property names
        pdf.SecuritySettings.OwnerPassword = "owner456";
        pdf.SecuritySettings.UserPassword = "user123";

        // Set permissions
        pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights;
        pdf.SecuritySettings.AllowUserCopyPasteContent = false;
        pdf.SecuritySettings.AllowUserEdits = PdfEditSecurity.NoEdit;
        pdf.SecuritySettings.AllowUserAnnotations = false;
        pdf.SecuritySettings.AllowUserFormData = true;

        pdf.SaveAs("protected.pdf");
    }
}
using IronPdf;

class Program
{
    static void Main()
    {
        var pdf = PdfDocument.FromFile("document.pdf");

        // Configure security settings with clear property names
        pdf.SecuritySettings.OwnerPassword = "owner456";
        pdf.SecuritySettings.UserPassword = "user123";

        // Set permissions
        pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights;
        pdf.SecuritySettings.AllowUserCopyPasteContent = false;
        pdf.SecuritySettings.AllowUserEdits = PdfEditSecurity.NoEdit;
        pdf.SecuritySettings.AllowUserAnnotations = false;
        pdf.SecuritySettings.AllowUserFormData = true;

        pdf.SaveAs("protected.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

IronPdfのSecuritySettingsプロパティは、ブールパラメータの代わりに、名前付きの自己文書化されたプロパティを提供します。


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

ページインデックス変換

このGdPicture.NET SDKの移行における最も重要な変更点の1つは、ページインデックスの違いです:

// GdPicture.NET SDK:1-indexedpages
for (int i = 1; i <= pdf.GetPageCount(); i++)
{
    pdf.SelectPage(i);
    // process page
}

// IronPDF: 0-indexed pages (standard .NET)
for (int i = 0; i < pdf.PageCount; i++)
{
    var page = pdf.Pages[i];
    // process page
}
// GdPicture.NET SDK:1-indexedpages
for (int i = 1; i <= pdf.GetPageCount(); i++)
{
    pdf.SelectPage(i);
    // process page
}

// IronPDF: 0-indexed pages (standard .NET)
for (int i = 0; i < pdf.PageCount; i++)
{
    var page = pdf.Pages[i];
    // process page
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

ステータス コードから例外へ

冗長なステータスチェックを標準的な try-catch に置き換えてください:

// GdPicture.NET SDK
GdPictureStatus status = converter.LoadFromHTMLString(html);
if (status != GdPictureStatus.OK)
{
    Console.WriteLine($"Error: {status}");
    return;
}

// IronPDF
try
{
    var pdf = renderer.RenderHtmlAsPdf(html);
    pdf.SaveAs("output.pdf");
}
catch (Exception ex)
{
    Console.WriteLine($"Error: {ex.Message}");
}
// GdPicture.NET SDK
GdPictureStatus status = converter.LoadFromHTMLString(html);
if (status != GdPictureStatus.OK)
{
    Console.WriteLine($"Error: {status}");
    return;
}

// IronPDF
try
{
    var pdf = renderer.RenderHtmlAsPdf(html);
    pdf.SaveAs("output.pdf");
}
catch (Exception ex)
{
    Console.WriteLine($"Error: {ex.Message}");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

ユニット変換

GdPicture.NET SDKは、余白にインチを使用しています; IronPDFはミリメートルを使用しています:

// GdPicture.NET SDK: 0.5 inches margin
converter.HtmlSetMargins(0.5f, 0.5f, 0.5f, 0.5f);

// IronPDF: 0.5 inches = 12.7 mm
renderer.RenderingOptions.MarginTop = 12.7;
renderer.RenderingOptions.MarginBottom = 12.7;
renderer.RenderingOptions.MarginLeft = 12.7;
renderer.RenderingOptions.MarginRight = 12.7;
// GdPicture.NET SDK: 0.5 inches margin
converter.HtmlSetMargins(0.5f, 0.5f, 0.5f, 0.5f);

// IronPDF: 0.5 inches = 12.7 mm
renderer.RenderingOptions.MarginTop = 12.7;
renderer.RenderingOptions.MarginBottom = 12.7;
renderer.RenderingOptions.MarginLeft = 12.7;
renderer.RenderingOptions.MarginRight = 12.7;
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

変換式<コード>ミリメートル=インチ×25.4</コード

スレッドの安全性

GdPicture.NET SDKは、同時処理に手動同期を必要とします。 IronPDFのChromePdfRendererは設計上スレッドセーフで、マルチスレッドのPDF生成を簡素化します。


パフォーマンスの考慮事項

ChromePdfRendererを再利用してください。

最適なパフォーマンスを得るために、レンダラーのインスタンスを再利用してください:

// GOOD - Reuse renderer (thread-safe)
public class PdfService
{
    private static readonly ChromePdfRenderer _renderer = new ChromePdfRenderer();

    public byte[] Generate(string html) => _renderer.RenderHtmlAsPdf(html).BinaryData;
}

// BAD - Creates new instance each time
public byte[] GenerateBad(string html)
{
    var renderer = new ChromePdfRenderer();  // Wasteful
    return renderer.RenderHtmlAsPdf(html).BinaryData;
}
// GOOD - Reuse renderer (thread-safe)
public class PdfService
{
    private static readonly ChromePdfRenderer _renderer = new ChromePdfRenderer();

    public byte[] Generate(string html) => _renderer.RenderHtmlAsPdf(html).BinaryData;
}

// BAD - Creates new instance each time
public byte[] GenerateBad(string html)
{
    var renderer = new ChromePdfRenderer();  // Wasteful
    return renderer.RenderHtmlAsPdf(html).BinaryData;
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

適切なリソースの処分

// Use using statements for automatic cleanup
using (var pdf = PdfDocument.FromFile("large.pdf"))
{
    string text = pdf.ExtractAllText();
}  // pdf is disposed automatically
// Use using statements for automatic cleanup
using (var pdf = PdfDocument.FromFile("large.pdf"))
{
    string text = pdf.ExtractAllText();
}  // pdf is disposed automatically
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

移行チェックリスト

移行前

  • [ ] コードベース内のすべてのGdPicture.NET SDKの使用状況の確認
  • [実際に使用される機能の特定(PDF対OCR対BarCode)。
  • [OCR/Barcode機能が必要かどうかを判断してください(IronOCR/IronBarcodeを検討してください)。
  • [現在のライセンスを確認し、IronPDFの価格と比較してください。
  • [IronPDF ライセンスキーの取得
  • [バージョン管理でマイグレーションブランチを作成する

コードの移行

  • [ ]GdPicture.NET SDKNuGetパッケージを削除します:dotnet remove package GdPicture.NET<//code> を実行してください。
  • [ ] IronPdf NuGetパッケージをインストールします:dotnet add package IronPdf<//code>.
  • [ ] 名前空間のインポートを更新する (GdPicture14IronPdf)
  • [ ] LicenseManager.RegisterKEY()IronPdf.License.LicenseKeyに置き換えてください。
  • [ ] ステータスコードチェックをtry-catchブロックに変換する
  • [ページインデックスの更新(1-indexed → 0-indexed)
  • [ ] GdPicturePDFPdfDocumentに置き換えてください。
  • [ ] GdPictureDocumentConverterChromePdfRendererに置き換えてください。
  • [座標ベースのテキストをHTMLスタンピングに変換してください。
  • [単位変換の更新(インチ → ミリメートル)

テスティング

  • [すべてのPDF生成パスのユニットテスト
  • [HTMLのレンダリング品質が、以下の品質と同等以上であることを確認してください。
  • [すべてのセキュリティ/暗号化シナリオのテスト
  • [フォーム入力機能の検証
  • [マージ/スプリット操作のテスト
  • [ウォーターマーク外観の検証
  • [パフォーマンスベンチマークのクリティカルパス

移行後

  • [ ] GdPicture.NET SDKライセンスファイル/キーの削除
  • [ドキュメントの更新
  • [IronPDF APIパターンをチームに教える
  • [問題発生時のモニタリング

結論

GdPicture.NETSDKからIronPDFに移行することで、PDF生成に焦点を当てた場合、完全なドキュメントイメージングSDKの複雑さを排除することができます。 この移行では、冗長なステータス・チェック・パターンをクリーンな例外ベースのエラー処理に置き換え、1インデックス・ページを標準の0インデックス・コレクションに置き換え、座標ベースのテキスト描画を直感的なHTML/CSSスタイリングに置き換えます。

IronPdfの集中的なアプローチは、最新のChromiumベースのHTMLレンダリング、スレッドセーフな操作、バージョンアップしても変わらない安定した名前空間を提供しながら、ライセンスコストを削減します。 OCRやバーコードが必要なチームには、コンパニオン製品のIronOCRとIronBarcodeが、モノリシックSDKのオーバーヘッドなしにこれらの機能を提供します。

IronPDFドキュメントチュートリアルAPIリファレンスを参照して、GdPicture.NET SDKへの移行を加速してください。

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

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

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