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

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

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

主な違い:

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

完全な API リファレンス

名前空間マッピング

GdPicture.NET SDK IronPDF
GdPicture14|IronPdf`(IronPDF
GdPicture14.PDF IronPdf(IronPDF
GdPicture14.Imaging 該当なし(不要)

コア クラス マッピング

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

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

GdPicture.NET SDK IronPDF ノート
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 SDK IronPDF ノート
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 SDK IronPDF ノート
pdf1.MergePages(pdf2). PdfDocument.Merge(pdf1, pdf2). PDFをマージ
pdf.ExtractPages(start, end). pdf.CopyPages(indices)を使用してください。 ページの抜粋

ウォーターマークの操作

GdPicture.NET SDK IronPDF ノート
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");
            }
        }
    }
}
$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");
    }
}
$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");
        }
    }
}
$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");
    }
}
$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");
        }
    }
}
$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");
    }
}
$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
            );
        }
    }
}
$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");
    }
}
$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
}
$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}");
}
$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;
$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;
}
$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
$vbLabelText   $csharpLabel

移行チェックリスト

移行前

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

コードの移行

-GdPicture.NET SDKNuGet パッケージを削除します: dotnet remove package GdPicture.NET

  • IronPdf NuGet パッケージをインストールします: dotnet add package IronPdf
  • 名前空間のインポートを更新 (GdPicture14IronPdf`(IronPDF)
  • LicenseManager.RegisterKEY()IronPdf.License.LicenseKeyに置き換えます
  • ステータスコードチェックをtry-catchブロックに変換する
  • ページのインデックスを更新(1 からインデックス → 0 からインデックス) -GdPicturePDF``PdfDocumentに置き換えます -GdPictureDocumentConverter``ChromePdfRendererに置き換えます
  • 座標ベースのテキストをHTMLスタンプに変換する
  • 単位変換を更新(インチ → ミリメートル)

テスティング

  • すべてのPDF生成パスをユニットテストする
  • HTMLレンダリング品質が一致または超過していることを確認する
  • すべてのセキュリティ/暗号化シナリオをテストする
  • フォーム入力機能を確認する
  • マージ/分割操作をテストする
  • 透かしの外観を検証する
  • パフォーマンスベンチマークのクリティカルパス

移行後

-GdPicture.NET SDKライセンスファイル/キーを削除します

  • ドキュメントの更新 -IronPDFAPIパターンについてチームをトレーニングする
  • 問題がないか生産状況を監視

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

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

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