How to Migrate from Nutrient.io to IronPDF in C#
Nutrient(以前はPSPDFKit)は、幅広い画像とPDFツールキットからフォーカスを絞ったPDFライブラリに移行することで、.NET PDFワークフローを簡素化します。 Nutrientのサーバーサイド.NETオファリングは、ORPALISから取得し"Nutrient .NET SDK"として再配置されたツールキットであるGdPicture.NETです。GdPicture NuGetパッケージとしてGdPicture14名前空間の下で出荷されます。 このガイドは、手順ごとの移行パスを歩き、手順的な多目的ツールキットをより小さな面積のPDF専用ライブラリに交換します。
NutrientからIronPDFへの移行理由
ツールキット表面積の問題
Nutrient(以前はPSPDFKit、2024-10-23にリブランド)は、ドキュメントエンジン(Dockerマイクロサービス)、Web SDK、モバイルSDK、およびサーバーサイド.NET SDK(GdPictureの下で)を含む多製品ファミリーを販売しています。 キット全体の残りを必要としない単純なPDF操作を必要とするチームにとって、表面積は具体的にいくつかの形で現れます:
-
広範なツールキットの範囲: .NET SDKはPDF、OCR、バーコード、TWAINスキャン、画像処理、および100以上のファイル形式間の変換をカバーしています。 その広さが必要な場合には有用です—PDF専用プロジェクトが必要としていない場合には、より多くの表面積があります。
-
セールス主導の価格設定:
nutrient.io/sdk/pricingページは開発者ごとのレートを公表するのではなく、コンタクトフォームに誘導するので、小規模なチームにとってコスト比較が難しくなります。 -
ブランドとパッケージの変動: PSPDFKit → Nutrient(2024-10-23)、さらにGdPictureの取得により、古いコードで追跡する必要がある3つの名前が生まれます。 .NET SDKは依然として
GdPictureNuGetパッケージ、名前空間GdPictureDocumentConverterのようなクラス名は"Nutrient"や"PSPDFKit"のブランディングに一致しません。 -
HTMLからPDFへの変換に必要な外部ブラウザの依存: .NET SDKのHTMLレンダラーは、システムにインストールされたChromeまたはEdge(または
SetWebBrowserPathを介して設定するポータブルパス)に依存します。 IronPDF自身の組み込みのChromiumを出荷します。 - 手続き型のPDF API: 透かしは
DrawTextBox、OCGレイヤーマーカーといった要素で構成されます。 ヘッダーとフッターはループ内でページごとに描画されます。プリミティブから共通のPDF操作を構成するにはタスクごとのコードが増えます。
Nutrient .NET SDKとIronPDFの比較
| アスペクト | Nutrient .NET SDK (GdPicture) | IronPDF |
|---|---|---|
| スコープ | PDF + OCR + バーコード + スキャン + イメージング | PDFライブラリ |
| 価格 | セールス主導(見積もりを求める) | 透明性のある出版物 |
| NuGetパッケージ | GdPicture |
IronPdf |
| ルートネームスペース | GdPicture14 |
IronPdf |
| APIスタイル | 主に同期、手順的描画呼び出し | 同期と非同期オプション、フルエント |
| HTMLレンダリング | システムChrome / Edgeが必要 | 埋め込まれたChromium |
| ページインデックス | 1ベース | 0ベース |
| ターゲットユーザー | イメージング + スキャン + PDFを1つのツールキットで必要とするチーム | PDFのみを必要とするチーム |
最新 for .NETでPDFのみを必要とするチームにとって、IronPDFは追加のイメージング / スキャン / OCRのレイヤーなしでクリーンに統合される小さなPDF中心の基盤を提供します。
始める前に
前提条件
- .NET環境: .NET Framework 4.6.2+ または.NET Core 3.1+ / .NET 5/6/7/8/9+
- NuGetアクセス: NuGetパッケージをインストールする機能
- IronPDFライセンス: IronPDFからライセンスキーを取得します。
NuGetパッケージの変更
# Remove theNutrient .NET SDK (GdPicture)and any legacy PSPDFKit-branded packages
dotnet remove package GdPicture
dotnet remove package GdPicture.WPF
dotnet remove package GdPicture.WinForms
dotnet remove package PSPDFKit.NET
# Install IronPDF
dotnet add package IronPdf
# Remove theNutrient .NET SDK (GdPicture)and any legacy PSPDFKit-branded packages
dotnet remove package GdPicture
dotnet remove package GdPicture.WPF
dotnet remove package GdPicture.WinForms
dotnet remove package PSPDFKit.NET
# Install IronPDF
dotnet add package IronPdf
現在のNutrient .NET SDKは、GdPicture NuGet ID(最新の14.x、ORPALIS—Nutrientの子会社がオーナー)として出荷されます。 旧PSPDFKitブランドのPSPDFKit.NETパッケージは終了します。 存在する場合は削除してください。
ライセンス構成
// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
' Add at application startup (Program.vb or Startup.vb)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
Nutrient .NET SDK使用の識別
# Find GdPicture / Nutrient / PSPDFKit usage
grep -rE "GdPicture14|GdPicturePDF|GdPictureDocumentConverter|PSPDFKit|Nutrient" --include="*.cs" .
# Find GdPicture / Nutrient / PSPDFKit usage
grep -rE "GdPicture14|GdPicturePDF|GdPictureDocumentConverter|PSPDFKit|Nutrient" --include="*.cs" .
完全な API リファレンス
初期化マッピング
| Nutrient .NET SDK (GdPicture) | IronPDF |
|---|---|
new GdPicturePDF() |
new PdfDocument(...) / PdfDocument.FromFile(...) |
new GdPictureDocumentConverter() |
new ChromePdfRenderer() |
pdf.Dispose() (IDisposable) |
pdf.Dispose() (IDisposable) |
ドキュメント読み込みマッピング
| Nutrient .NET SDK (GdPicture) | IronPDF |
|---|---|
pdf.LoadFromFile(path) |
PdfDocument.FromFile(path) |
pdf.LoadFromStream(stream) |
PdfDocument.FromStream(stream) |
pdf.LoadFromByteArray(bytes) |
new PdfDocument(bytes) / PdfDocument.FromBinaryData(bytes) |
PDF生成マッピング
| Nutrient .NET SDK (GdPicture) | IronPDF |
|---|---|
HTML文字列:一時ファイルに書き込み、その後converter.LoadFromFile(path, DocumentFormat.DocumentFormatHTML) + SaveAsPDF(out) |
renderer.RenderHtmlAsPdf(html) |
converter.LoadFromHttp(url) + SaveAsPDF(out) |
renderer.RenderUrlAsPdf(url) |
converter.LoadFromFile(htmlPath, DocumentFormat.DocumentFormatHTML) + SaveAsPDF(out) |
renderer.RenderHtmlFileAsPdf(path) |
ドキュメント操作マッピング
| Nutrient .NET SDK (GdPicture) | IronPDF |
|---|---|
converter.CombineToPDF(paths, out, PdfConformance.PDF) |
PdfDocument.Merge(pdfs) |
pdf.GetPageCount() |
pdf.PageCount |
pdf.SaveToFile(path) |
pdf.SaveAs(path) |
pdf.SaveToByteArray(out bytes) |
pdf.BinaryData |
ウォーターマークのマッピング
| Nutrient .NET SDK (GdPicture) | IronPDF |
|---|---|
pdf.SetFillAlpha(...) + pdf.DrawTextBox(...) ページごとに |
pdf.ApplyWatermark(html, rotation, vAlign, hAlign) |
pdf.AddStandardFont(...) + 描画呼び出し |
ウォーターマーク文字列内のHTML/CSS |
SetFillAlpha(128) (0–255 バイトスケール) |
透かし Opacity 0–100 (int)またはCSS opacity |
pdf.SetTextSize(48) |
CSS font-size: 48px |
コード移行の例
例1: HTMLからPDFへの変換
前(Nutrient .NET SDK / GdPictureの場合):
// NuGet: Install-Package GdPicture
using GdPicture14;
using System.IO;
class Program
{
static void Main()
{
var htmlContent = "<html><body><h1>Hello World</h1></body></html>";
// GdPicture's HTML loader is file-based, so stage the string to disk first.
File.WriteAllText("input.html", htmlContent);
using var converter = new GdPictureDocumentConverter();
converter.LoadFromFile("input.html", DocumentFormat.DocumentFormatHTML);
converter.SaveAsPDF("output.pdf");
}
}
// NuGet: Install-Package GdPicture
using GdPicture14;
using System.IO;
class Program
{
static void Main()
{
var htmlContent = "<html><body><h1>Hello World</h1></body></html>";
// GdPicture's HTML loader is file-based, so stage the string to disk first.
File.WriteAllText("input.html", htmlContent);
using var converter = new GdPictureDocumentConverter();
converter.LoadFromFile("input.html", DocumentFormat.DocumentFormatHTML);
converter.SaveAsPDF("output.pdf");
}
}
Imports GdPicture14
Imports System.IO
Class Program
Shared Sub Main()
Dim htmlContent As String = "<html><body><h1>Hello World</h1></body></html>"
' GdPicture's HTML loader is file-based, so stage the string to disk first.
File.WriteAllText("input.html", htmlContent)
Using converter As New GdPictureDocumentConverter()
converter.LoadFromFile("input.html", DocumentFormat.DocumentFormatHTML)
converter.SaveAsPDF("output.pdf")
End Using
End Sub
End Class
翻訳後(IronPDF):。
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var htmlContent = "<html><body><h1>Hello World</h1></body></html>";
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("output.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var htmlContent = "<html><body><h1>Hello World</h1></body></html>";
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("output.pdf");
}
}
Imports IronPdf
Class Program
Shared Sub Main()
Dim htmlContent As String = "<html><body><h1>Hello World</h1></body></html>"
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
pdf.SaveAs("output.pdf")
End Sub
End Class
GdPictureのアプローチは追加のステップを必要とします: HTMLローダーはファイル/URLベースであるため、インメモリのHTML文字列はまずディスクにステージされなければならず、それからSaveAsPDFを行います。 HTMLレンダリングは、システムにインストールされたChromeまたはEdge(またはSetWebBrowserPathを介して提供されるポータブルパス)に依存します。
IronPDFはHTML文字列を直接受け入れます。 SaveAs()で保存します。 一時ファイルも、ホストブラウザ依存も不要—IronPDFは自身の組み込みのChromiumを搭載しています。 その他のレンダリングオプションについては、HTML to PDF documentationを参照してください。
例2: 複数のPDFをマージする
前(Nutrient .NET SDK / GdPictureの場合):
// NuGet: Install-Package GdPicture
using GdPicture14;
using System.Collections.Generic;
class Program
{
static void Main()
{
IEnumerable<string> sourceFiles = new List<string>
{
"document1.pdf",
"document2.pdf"
};
using var converter = new GdPictureDocumentConverter();
converter.CombineToPDF(sourceFiles, "merged.pdf", PdfConformance.PDF);
}
}
// NuGet: Install-Package GdPicture
using GdPicture14;
using System.Collections.Generic;
class Program
{
static void Main()
{
IEnumerable<string> sourceFiles = new List<string>
{
"document1.pdf",
"document2.pdf"
};
using var converter = new GdPictureDocumentConverter();
converter.CombineToPDF(sourceFiles, "merged.pdf", PdfConformance.PDF);
}
}
Imports GdPicture14
Imports System.Collections.Generic
Class Program
Shared Sub Main()
Dim sourceFiles As IEnumerable(Of String) = New List(Of String) From {
"document1.pdf",
"document2.pdf"
}
Using converter As New GdPictureDocumentConverter()
converter.CombineToPDF(sourceFiles, "merged.pdf", PdfConformance.PDF)
End Using
End Sub
End Class
翻訳後(IronPDF):。
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
}
}
Imports IronPdf
Class Program
Shared Sub Main()
Dim pdf1 = PdfDocument.FromFile("document1.pdf")
Dim pdf2 = PdfDocument.FromFile("document2.pdf")
Dim merged = PdfDocument.Merge(pdf1, pdf2)
merged.SaveAs("merged.pdf")
End Sub
End Class
GdPictureのマージはパスベースのPdfConformance値を設定します。
IronPDFはドキュメントレベルで機能します: 各PDFをPdfDocument.Merge()メソッドでマージし、保存します。 ドキュメントは直接または列挙として渡すことができます。 PDFのマージと分割については、こちらをご覧ください。
例3: 透かしを追加する
前(Nutrient .NET SDK / GdPictureの場合):
// NuGet: Install-Package GdPicture
using GdPicture14;
class Program
{
static void Main()
{
using var pdf = new GdPicturePDF();
pdf.LoadFromFile("document.pdf");
pdf.SetMeasurementUnit(PdfMeasurementUnit.PdfMeasurementUnitPoint);
var font = pdf.AddStandardFont(PdfStandardFont.PdfStandardFontHelveticaBold);
int pageCount = pdf.GetPageCount();
for (int i = 1; i <= pageCount; i++)
{
pdf.SelectPage(i);
pdf.SetFillAlpha(128); // ~50% (0..255)
pdf.SetTextSize(48);
pdf.SetOriginRotationInDegrees(45);
pdf.DrawTextBox(font, 100, 300, 500, 400, "CONFIDENTIAL",
PdfHorizontalAlignment.PdfHorizontalAlignmentCenter,
PdfVerticalAlignment.PdfVerticalAlignmentMiddle);
}
pdf.SaveToFile("watermarked.pdf");
}
}
// NuGet: Install-Package GdPicture
using GdPicture14;
class Program
{
static void Main()
{
using var pdf = new GdPicturePDF();
pdf.LoadFromFile("document.pdf");
pdf.SetMeasurementUnit(PdfMeasurementUnit.PdfMeasurementUnitPoint);
var font = pdf.AddStandardFont(PdfStandardFont.PdfStandardFontHelveticaBold);
int pageCount = pdf.GetPageCount();
for (int i = 1; i <= pageCount; i++)
{
pdf.SelectPage(i);
pdf.SetFillAlpha(128); // ~50% (0..255)
pdf.SetTextSize(48);
pdf.SetOriginRotationInDegrees(45);
pdf.DrawTextBox(font, 100, 300, 500, 400, "CONFIDENTIAL",
PdfHorizontalAlignment.PdfHorizontalAlignmentCenter,
PdfVerticalAlignment.PdfVerticalAlignmentMiddle);
}
pdf.SaveToFile("watermarked.pdf");
}
}
Imports GdPicture14
Class Program
Shared Sub Main()
Using pdf As New GdPicturePDF()
pdf.LoadFromFile("document.pdf")
pdf.SetMeasurementUnit(PdfMeasurementUnit.PdfMeasurementUnitPoint)
Dim font = pdf.AddStandardFont(PdfStandardFont.PdfStandardFontHelveticaBold)
Dim pageCount As Integer = pdf.GetPageCount()
For i As Integer = 1 To pageCount
pdf.SelectPage(i)
pdf.SetFillAlpha(128) ' ~50% (0..255)
pdf.SetTextSize(48)
pdf.SetOriginRotationInDegrees(45)
pdf.DrawTextBox(font, 100, 300, 500, 400, "CONFIDENTIAL", PdfHorizontalAlignment.PdfHorizontalAlignmentCenter, PdfVerticalAlignment.PdfVerticalAlignmentMiddle)
Next
pdf.SaveToFile("watermarked.pdf")
End Using
End Sub
End Class
翻訳後(IronPDF):。
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Editing;
class Program
{
static void Main()
{
var pdf = PdfDocument.FromFile("document.pdf");
pdf.ApplyWatermark("<h1 style='color:gray;opacity:0.5;'>CONFIDENTIAL</h1>",
45,
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("document.pdf");
pdf.ApplyWatermark("<h1 style='color:gray;opacity:0.5;'>CONFIDENTIAL</h1>",
45,
VerticalAlignment.Middle,
HorizontalAlignment.Center);
pdf.SaveAs("watermarked.pdf");
}
}
Imports IronPdf
Imports IronPdf.Editing
Class Program
Shared Sub Main()
Dim pdf = PdfDocument.FromFile("document.pdf")
pdf.ApplyWatermark("<h1 style='color:gray;opacity:0.5;'>CONFIDENTIAL</h1>",
45,
VerticalAlignment.Middle,
HorizontalAlignment.Center)
pdf.SaveAs("watermarked.pdf")
End Sub
End Class
この例では、基本的なアーキテクチャの違いが浮き彫りになっています。 GdPictureは手続き型の描画呼び出しアプローチ: 標準フォントを追加し、すべてのページを1からベースで反復し、DrawTextBoxを呼び出します。 アルファは0–255バイトスケールであり、回転はグラフィックスステートプロパティとして設定され、ポジショニングは明示的な座標を通じて処理されます。
IronPDFはHTMLベースのアプローチ: ApplyWatermark()メソッドは、CSSスタイリングを含むHTML文字列を受け入れ、単一の呼び出しですべてのページに適用します。 おなじみのCSSプロパティ(font-size)を通じて外観を制御し、原始的なグラフィック呼び出しではなく行います。 このアプローチは、同じ文字列でより豊富なコンテンツ(グラデーション、画像、より複雑なレイアウト)もサポートします。 高度な例については、透かしのドキュメントを参照してください。
重要な移行に関する注意事項
HTML入力表面
GdPictureのHTMLローダーはファイル/URLベースです; IronPDFはHTML文字列を直接受け入れます:
// Nutrient .NET SDK (string -> file -> PDF):
File.WriteAllText("input.html", html);
converter.LoadFromFile("input.html", DocumentFormat.DocumentFormatHTML);
converter.SaveAsPDF("output.pdf");
//IronPDF(string -> PDF):
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
// Nutrient .NET SDK (string -> file -> PDF):
File.WriteAllText("input.html", html);
converter.LoadFromFile("input.html", DocumentFormat.DocumentFormatHTML);
converter.SaveAsPDF("output.pdf");
//IronPDF(string -> PDF):
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
' Nutrient .NET SDK (string -> file -> PDF):
File.WriteAllText("input.html", html)
converter.LoadFromFile("input.html", DocumentFormat.DocumentFormatHTML)
converter.SaveAsPDF("output.pdf")
' IronPDF(string -> PDF):
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
非同期操作が必要な場合、IronPDFはRenderHtmlAsPdfAsync()のような非同期バリアントを提供します。
外部ブラウザの依存
GdPictureのHTMLレンダラーは、システムChromeまたはEdgeのインストール(またはSetWebBrowserPathを介して設定するポータブルパス)に依存します。 IronPDFは自身の組み込みのChromiumを提供します:
// Nutrient .NET SDK: optionally point to a portable Chrome
converter.SetWebBrowserPath(@"C:\Tools\chrome\chrome.exe");
// IronPDF: nothing to configure
var pdf = renderer.RenderHtmlAsPdf(html);
// Nutrient .NET SDK: optionally point to a portable Chrome
converter.SetWebBrowserPath(@"C:\Tools\chrome\chrome.exe");
// IronPDF: nothing to configure
var pdf = renderer.RenderHtmlAsPdf(html);
' Nutrient .NET SDK: optionally point to a portable Chrome
converter.SetWebBrowserPath("C:\Tools\chrome\chrome.exe")
' IronPDF: nothing to configure
Dim pdf = renderer.RenderHtmlAsPdf(html)
構成パターンの変更
GdPictureは、コンバーター(HTMLページ幅/高さ(インチ単位)、個々の余白)上のプロパティごとにレイアウト設定を露出します。 IronPDFは、これらを名前付きの用紙サイズでRenderingOptionsバッグにまとめます:
// Nutrient .NET SDK: properties on the converter (inches)
using var converter = new GdPictureDocumentConverter();
converter.HtmlPageWidth = 8.27f; // A4 width (inches)
converter.HtmlPageHeight = 11.69f; // A4 height (inches)
converter.HtmlMarginTop = 0.78f;
converter.HtmlMarginBottom = 0.78f;
converter.HtmlMarginLeft = 0.78f;
converter.HtmlMarginRight = 0.78f;
// IronPDF: properties on RenderingOptions (millimetres)
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 20;
renderer.RenderingOptions.MarginBottom = 20;
renderer.RenderingOptions.MarginLeft = 20;
renderer.RenderingOptions.MarginRight = 20;
var pdf = renderer.RenderHtmlAsPdf(html);
// Nutrient .NET SDK: properties on the converter (inches)
using var converter = new GdPictureDocumentConverter();
converter.HtmlPageWidth = 8.27f; // A4 width (inches)
converter.HtmlPageHeight = 11.69f; // A4 height (inches)
converter.HtmlMarginTop = 0.78f;
converter.HtmlMarginBottom = 0.78f;
converter.HtmlMarginLeft = 0.78f;
converter.HtmlMarginRight = 0.78f;
// IronPDF: properties on RenderingOptions (millimetres)
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 20;
renderer.RenderingOptions.MarginBottom = 20;
renderer.RenderingOptions.MarginLeft = 20;
renderer.RenderingOptions.MarginRight = 20;
var pdf = renderer.RenderHtmlAsPdf(html);
Imports GdPicture14
Imports IronPdf
' Nutrient .NET SDK: properties on the converter (inches)
Using converter As New GdPictureDocumentConverter()
converter.HtmlPageWidth = 8.27F ' A4 width (inches)
converter.HtmlPageHeight = 11.69F ' A4 height (inches)
converter.HtmlMarginTop = 0.78F
converter.HtmlMarginBottom = 0.78F
converter.HtmlMarginLeft = 0.78F
converter.HtmlMarginRight = 0.78F
End Using
' IronPDF: properties on RenderingOptions (millimetres)
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.MarginTop = 20
renderer.RenderingOptions.MarginBottom = 20
renderer.RenderingOptions.MarginLeft = 20
renderer.RenderingOptions.MarginRight = 20
Dim pdf = renderer.RenderHtmlAsPdf(html)
手続的ウォーターマークからHTMLウォーターマークへ
プリミティブな描画呼び出しを単一のHTML/CSS文字列に置き換えます:
// Nutrient .NET SDK: SetFillAlpha + SetTextSize + DrawTextBox in a per-page loop
pdf.SetFillAlpha(128);
pdf.SetTextSize(48);
pdf.SetOriginRotationInDegrees(45);
pdf.DrawTextBox(font, 100, 300, 500, 400, "CONFIDENTIAL",
PdfHorizontalAlignment.PdfHorizontalAlignmentCenter,
PdfVerticalAlignment.PdfVerticalAlignmentMiddle);
// IronPDF: one HTML/CSS string
pdf.ApplyWatermark("<h1 style='opacity:0.5; font-size:48px;'>CONFIDENTIAL</h1>",
45, VerticalAlignment.Middle, HorizontalAlignment.Center);
// Nutrient .NET SDK: SetFillAlpha + SetTextSize + DrawTextBox in a per-page loop
pdf.SetFillAlpha(128);
pdf.SetTextSize(48);
pdf.SetOriginRotationInDegrees(45);
pdf.DrawTextBox(font, 100, 300, 500, 400, "CONFIDENTIAL",
PdfHorizontalAlignment.PdfHorizontalAlignmentCenter,
PdfVerticalAlignment.PdfVerticalAlignmentMiddle);
// IronPDF: one HTML/CSS string
pdf.ApplyWatermark("<h1 style='opacity:0.5; font-size:48px;'>CONFIDENTIAL</h1>",
45, VerticalAlignment.Middle, HorizontalAlignment.Center);
' Nutrient .NET SDK: SetFillAlpha + SetTextSize + DrawTextBox in a per-page loop
pdf.SetFillAlpha(128)
pdf.SetTextSize(48)
pdf.SetOriginRotationInDegrees(45)
pdf.DrawTextBox(font, 100, 300, 500, 400, "CONFIDENTIAL", PdfHorizontalAlignment.PdfHorizontalAlignmentCenter, PdfVerticalAlignment.PdfVerticalAlignmentMiddle)
' IronPDF: one HTML/CSS string
pdf.ApplyWatermark("<h1 style='opacity:0.5; font-size:48px;'>CONFIDENTIAL</h1>", 45, VerticalAlignment.Middle, HorizontalAlignment.Center)
ページ番号の取り扱い
GdPictureには一流のヘッダー/フッターモデルがありません-ページ番号はループで各ページごとに描画されます。IronPDFは組み込みの{page} / {total-pages}プレースホルダーを公開します:
// Nutrient .NET SDK: per-page DrawText loop (1-based)
for (int i = 1; i <= pdf.GetPageCount(); i++)
{
pdf.SelectPage(i);
pdf.DrawText(font, x, y, $"Page {i} of {pdf.GetPageCount()}");
}
// IronPDF: built-in placeholders
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
HtmlFragment = "Page {page} of {total-pages}"
};
// Nutrient .NET SDK: per-page DrawText loop (1-based)
for (int i = 1; i <= pdf.GetPageCount(); i++)
{
pdf.SelectPage(i);
pdf.DrawText(font, x, y, $"Page {i} of {pdf.GetPageCount()}");
}
// IronPDF: built-in placeholders
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
HtmlFragment = "Page {page} of {total-pages}"
};
' Nutrient .NET SDK: per-page DrawText loop (1-based)
For i As Integer = 1 To pdf.GetPageCount()
pdf.SelectPage(i)
pdf.DrawText(font, x, y, $"Page {i} of {pdf.GetPageCount()}")
Next
' IronPDF: built-in placeholders
renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter With {
.HtmlFragment = "Page {page} of {total-pages}"
}
ページ索引
GdPictureは1ベースです(SelectPage(1)は最初のページです)。 IronPDFのpdf.RemovePages(int)は0ベースです。 オフバイワンは最も一般的なポーティングバグです:
// Nutrient .NET SDK (1-based):
pdf.SelectPage(1);
pdf.DeletePage();
//IronPDF(0-based):
pdf.RemovePages(0);
// Nutrient .NET SDK (1-based):
pdf.SelectPage(1);
pdf.DeletePage();
//IronPDF(0-based):
pdf.RemovePages(0);
' Nutrient .NET SDK (1-based):
pdf.SelectPage(1)
pdf.DeletePage()
' IronPDF(0-based):
pdf.RemovePages(0)
トラブルシューティング
問題1: GdPictureDocumentConverterが見つかりません
問題: IronPDFにGdPictureDocumentConverterクラスは存在しません。
解決策: HTML/URL → PDFにはChromePdfRendererを使用してください:
// Nutrient .NET SDK
using var converter = new GdPictureDocumentConverter();
// IronPDF
var renderer = new ChromePdfRenderer();
// Nutrient .NET SDK
using var converter = new GdPictureDocumentConverter();
// IronPDF
var renderer = new ChromePdfRenderer();
Imports GdPicture14
Imports IronPdf
' Nutrient .NET SDK
Using converter As New GdPictureDocumentConverter()
' Your code here
End Using
' IronPDF
Dim renderer As New ChromePdfRenderer()
問題2: GdPicturePDFが見つかりません
問題: IronPDFにGdPicturePDFクラスは存在しません。
解決策: PdfDocumentを使用してください:
// Nutrient .NET SDK
using var pdf = new GdPicturePDF();
pdf.LoadFromFile("input.pdf");
// IronPDF
var pdf = PdfDocument.FromFile("input.pdf");
// Nutrient .NET SDK
using var pdf = new GdPicturePDF();
pdf.LoadFromFile("input.pdf");
// IronPDF
var pdf = PdfDocument.FromFile("input.pdf");
Imports GdPicture14
Imports IronPdf
' Nutrient .NET SDK
Using pdf As New GdPicturePDF()
pdf.LoadFromFile("input.pdf")
End Using
' IronPDF
Dim pdfDocument = PdfDocument.FromFile("input.pdf")
問題3: DrawTextBox / SetFillAlphaが見つかりません
問題: Primitive draw callsはIronPDFには存在しません。
解決策: HTML ベースの透かしを使用する:
// Nutrient .NET SDK
pdf.SetFillAlpha(128);
pdf.DrawTextBox(font, 100, 300, 500, 400, "DRAFT",
PdfHorizontalAlignment.PdfHorizontalAlignmentCenter,
PdfVerticalAlignment.PdfVerticalAlignmentMiddle);
// IronPDF
pdf.ApplyWatermark("<div style='opacity:0.5;'>DRAFT</div>",
45, VerticalAlignment.Middle, HorizontalAlignment.Center);
// Nutrient .NET SDK
pdf.SetFillAlpha(128);
pdf.DrawTextBox(font, 100, 300, 500, 400, "DRAFT",
PdfHorizontalAlignment.PdfHorizontalAlignmentCenter,
PdfVerticalAlignment.PdfVerticalAlignmentMiddle);
// IronPDF
pdf.ApplyWatermark("<div style='opacity:0.5;'>DRAFT</div>",
45, VerticalAlignment.Middle, HorizontalAlignment.Center);
' Nutrient .NET SDK
pdf.SetFillAlpha(128)
pdf.DrawTextBox(font, 100, 300, 500, 400, "DRAFT", PdfHorizontalAlignment.PdfHorizontalAlignmentCenter, PdfVerticalAlignment.PdfVerticalAlignmentMiddle)
' IronPDF
pdf.ApplyWatermark("<div style='opacity:0.5;'>DRAFT</div>", 45, VerticalAlignment.Middle, HorizontalAlignment.Center)
問題4: CombineToPDFが見つかりません
問題: パスベースの結合メソッドが存在しません。
解決策: 各PDFをPdfDocument.Merge()を使用してください:
// Nutrient .NET SDK
converter.CombineToPDF(paths, "merged.pdf", PdfConformance.PDF);
// IronPDF
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
// Nutrient .NET SDK
converter.CombineToPDF(paths, "merged.pdf", PdfConformance.PDF);
// IronPDF
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
' Nutrient .NET SDK
converter.CombineToPDF(paths, "merged.pdf", PdfConformance.PDF)
' IronPDF
Dim merged = PdfDocument.Merge(pdf1, pdf2)
merged.SaveAs("merged.pdf")
問題5: オフバイワンページインデックス
問題: GdPictureは1基準のページインデックスを使用します; IronPDFは0基準を使用します。 pdf.Pages[1]への直接ポートは、最初のページをスキップします。
解決策: ポートする際にページインデックスを1引いてください:
// Nutrient .NET SDK (first page)
pdf.SelectPage(1);
//IronPDF(first page)
var firstPage = pdf.Pages[0];
// Nutrient .NET SDK (first page)
pdf.SelectPage(1);
//IronPDF(first page)
var firstPage = pdf.Pages[0];
' Nutrient .NET SDK (first page)
pdf.SelectPage(1)
' IronPDF(first page)
Dim firstPage = pdf.Pages(0)
移行チェックリスト
移行前
- コードベース内のすべてのGdPicture / PSPDFKit / Nutrientの使用をインベントリする
- 現在のGdPictureコードでの1基準対0基準のページインデックスを注意する
GdPictureDocumentConverterに設定したリスト構成を確認する(HTMLページの寸法、余白)- 透かしおよびヘッダー用の手続き型描画を特定する(
DrawTextBox) - インデックスベースのアクセスを使用したフォームフィールドコードをレビューする(
GetFormFieldName(i)) - IronPDFライセンスキーを取得する
パッケージの変更
GdPictureNuGetパッケージを削除する(存在する場合はGdPicture.WPF/GdPicture.WinForms)- 旧
PSPDFKit.NETパッケージを削除する(存在する場合) IronPdfNuGetパッケージをインストールする:dotnet add package IronPdf- 名前空間インポートを更新する(
using GdPicture14;→using IronPdf;)
コードの変更
- 起動時にライセンスキー設定を追加する
- HTML/URL → PDFには
new ChromePdfRenderer()に置き換える new GdPicturePDF()+PdfDocument.FromFile()に置き換えるPdfDocument.Merge()に置き換える- 手続き型透かし描画呼び出しを
pdf.ApplyWatermark(html, ...)に変換する - コンバータプロパティを
RenderingOptions(名前付き用紙サイズ、mm余白)に置き換える - ヘッダー/フッターを
{page}/{total-pages}トークンで更新する - 1基準のページインデックスを全体にわたって0基準に変換する
移行後
- GdPicture用のシステムChrome / Edge依存をデプロイメントイメージから削除する(それが唯一の理由だった場合)
- PDF出力を比較する回帰テストを実行する
- ページ番号付きのヘッダー/フッターを検証する
- 透かしのレンダリングをテストする
- CI/CDパイプラインの更新

