IRONSOFTWAREHOME
ビデオ

How to Save and Edit PDF Revision History in C#

Curtis Chau
Curtis Chau
Updated: 2026年7月19日

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

GdPicture.NET/SDKから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 は、最新 for .NETパターンではなく、ドキュメント イメージングの概念に基づいて設計されています。 方法はGdPictureStatus列挙型チェック、および1から始まるページが現代のC#の慣例と比べると時代遅れに感じられます。

  1. ステータスコードパターン: すべての操作はGdPictureStatus列挙型を返し、エラー時に例外はスローされず、エラー処理が冗長で繰り返しになります。

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

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

8.**ブランド変更による混乱:**最近の"Nutrient"へのブランド変更により、gdpicture.com と nutrient.io の間でドキュメントが断片化され、サポートと学習が複雑になっています。

GdPicture.NET/SDKと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)

IronPDFは現代 for .NETのパターンと規約に一致し、現行.NETバージョンのチームにとって簡単に適合します。


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

機能別の見積もり作業

フィーチャー移行の複雑さ
HTMLからPDFへ低レベル
URLからPDFへ低レベル
PDFのマージ低レベル
PDFの分割低レベル
透かし低レベル
テキスト抽出低レベル
パスワード保護中規模
フォームフィールド中規模
デジタル署名中・高
OCR高い
バーコード認識該当なし

移行の決定マトリックス

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

始める前に

前提条件

  1. .NETバージョン: IronPDFは.NET Framework 4.6.2+および.NET Core 2.0+ / .NET 5+をサポートしています。 2.ライセンスキー: IronPDFから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" .
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
SHELL

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

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

以前(GdPicture.NET SDK):

// Must be called before anyGdPicture.NET SDKoperations
LicenseManager.RegisterKEY("YOUR-GDPICTURE-LICENSE-KEY");

翻訳後(IronPDF):

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

// Or in appsettings.json:
// { "IronPdf.License.LicenseKey": "YOUR-LICENSE-KEY" }

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

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

// After (IronPDF)
using IronPdf;
using IronPdf.Editing;

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

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

以前(GdPicture.NET SDK):

using GdPicture14;

LicenseManager.RegisterKEY("YOUR-GDPICTURE-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}");
    }
}

翻訳後(IronPDF):

using IronPdf;

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

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

主な違い:

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

完全な API リファレンス

名前空間マッピング

GdPicture.NET SDKIronPDF
GdPicture14IronPdf
GdPicture14.PDFIronPdf
GdPicture14.Imaging該当なし(不要)

コア クラス マッピング

GdPicture.NET SDKIronPDF翻訳内容
GdPicturePDFPdfDocument主なPDF文書クラス
GdPictureDocumentConverterChromePdfRendererHTML/URLからPDFへの変換
LicenseManagerIronPdf.Licenseライセンス管理
GdPictureStatus例外エラー処理

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

GdPicture.NET SDKIronPDF
pdf.LoadFromFile(path, loadInMemory)PdfDocument.FromFile(path)
pdf.LoadFromFile(path, password, loadInMemory)PdfDocument.FromFile(path, password)
converter.LoadFromHTMLString(html)renderer.RenderHtmlAsPdf(html)
converter.LoadFromURL(url)renderer.RenderUrlAsPdf(url)

ページ操作

GdPicture.NET SDKIronPDF
pdf.GetPageCount()pdf.PageCount
pdf.SelectPage(pageNo)pdf.Pages[index]
pdf.GetPageWidth()pdf.Pages[i].Width
pdf.GetPageHeight()pdf.Pages[i].Height

マージと分割の操作

GdPicture.NET SDKIronPDF
pdf1.MergePages(pdf2)PdfDocument.Merge(pdf1, pdf2)
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");
            }
        }
    }
}

翻訳後(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");
    }
}

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");
        }
    }
}

翻訳後(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");
    }
}

IronPDFの静的Mergeメソッドはドキュメントのリストを受け取り、一つの操作で複数のPDFを簡単に結合できます。 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");
        }
    }
}

翻訳後(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");
    }
}

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

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

以前(GdPicture.NET SDK):

using GdPicture14;

class Program
{
    static void Main()
    {
        LicenseManager.RegisterKEY("YOUR-GDPICTURE-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
            );
        }
    }
}

翻訳後(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");
    }
}

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
}

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

冗長なステータスチェックを標準的な 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は、余白にインチを使用しています; 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;

変換式: millimeters = inches × 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;
}

適切なリソースの処分

// Use using statements for automatic cleanup
using (var pdf = PdfDocument.FromFile("large.pdf"))
{
    string text = pdf.ExtractAllText();
}  // pdf is disposed automatically

移行チェックリスト

移行前

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

コードの移行

-GdPicture.NET SDKNuGetパッケージを削除する: dotnet remove package GdPicture.NET -IronPDFNuGetパッケージをインストールする: dotnet add package IronPdf

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

テスティング

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

移行後

  • GdPicture .NET SDK ライセンスファイル/キーを削除します
  • ドキュメントの更新 -IronPDFAPIパターンについてチームをトレーニングする
  • 問題がないか生産状況を監視

ご注意: GdPicture.NETとNutrientはそれぞれの所有者の登録商標です。 このサイトはNutrient、ORPALIS、またはPSPDFKitと関係がなく、推奨やスポンサー提供を受けていません。 すべての製品名、ロゴ、およびブランドは各所有者の所有物です。 比較は情報提供のみを目的としており、執筆時点で公開されている情報を反映しています。
Curtis Chau
テクニカルライター

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

...
詳しく読む

関連する記事

Key in blue circle

無料の30日間トライアルキーをすぐに入手してください。

Your trial license will be sent to your email address

制限なし。100% ロック解除済み。クレジットカード不要。

bullet_checkedクレジットカードやアカウントの作成は不要です。制限なし。100% ロック解除済み。クレジットカード不要。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
無料のライブデモを予約する
Booking Badge

世界中の数百万人のエンジニアから信頼されています。

ライセンスはより安く
義務のない相談を受ける
下記のフォームを記入するか、sales@ironsoftware.comにメールしてください。
あなたの詳細は常に守秘されます。
世界中の数百万人のエンジニアから信頼されています。
ライセンスはより安く
あなたの無料30日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。