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

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

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

GotenbergからIronPDFへの移行は、あなたの.NET PDFワークフローをHTTP API呼び出しによるDockerベースのマイクロサービス・アーキテクチャからプロセス内のネイティブC#ライブラリに変換します。 このガイドでは、.NETのプロフェッショナルな開発者向けに、インフラストラクチャのオーバーヘッド、ネットワーク遅延、コンテナ管理の複雑さを解消する、包括的でステップバイステップの移行パスを提供します。

なぜGotenbergからIronPDFに移行するのか

ゴテンベルク・アーキテクチャ問題

Gotenbergは、PDF生成のためのDockerベースのマイクロサービスアーキテクチャです。 強力で柔軟な反面、C#アプリケーションには大きな複雑さをもたらします:

1.インフラストラクチャ・オーバーヘッド:Docker、コンテナオーケストレーション(Kubernetes/Docker Compose)、サービスディスカバリー、ロードバランシングが必要です。 デプロイメントが複雑になるたびに

2.ネットワーク遅延:すべてのPDF操作は、別のサービスへのHTTPコールを必要とします。大容量のシナリオでは、この待ち時間は急速に増大します。

3.コールドスタートの問題:コンテナのスタートアップは、最初のリクエストに2-5秒を追加する可能性があります。 ポッドの再起動、スケールアップのイベント、デプロイのたびにコールドスタートが発生します。

4.運用の複雑さ: コンテナの健全性、スケーリング、ロギング、およびモニタリングを、メインのアプリケーションとは別の問題として管理する必要があります。

5.マルチパートフォームデータ: すべてのリクエストは、マルチパート/フォームデータのペイロードを構築する必要があります。

6.失敗のポイント: ネットワークのタイムアウト、サービスの利用不能、コンテナのクラッシュは、すべてあなたの責任となります。

7.バージョン管理:Gotenberg 画像はアプリケーションとは別に更新されます; APIの変更は、予期せず統合を壊す可能性があります。

GotenbergとIronPDFの比較

アスペクトGotenbergIronPDF
デプロイメントDockerコンテナ+オーケストレーション単一のNuGetパッケージ
アーキテクチャマイクロサービス(REST API)インプロセスライブラリ
リクエストあたりの待ち時間10-100ms以上(ネットワーク・ラウンドトリップ)<1msのオーバーヘッド
コールドスタート2~5秒(コンテナinit)1~2秒(最初のレンダリングのみ)
インフラDocker、Kubernetes、ロードバランサー不要
障害モードネットワーク、コンテナ、サービス障害.NET 標準の例外
APIスタイルREST multipart/form-dataC#ネイティブメソッドコール
スケーリング水平方向(コンテナを増やす)垂直方向(進行中)
デバッグ分散トレースが必要標準デバッガ
バージョン管理コンテナ画像タグNuGetパッケージのバージョン

2025年と2026年まで.NET 10とC# 14の導入を計画しているチームにとって、IronPDFは最新の.NETパターンとネイティブに統合する、インフラ依存ゼロの将来性のある基盤を提供します。


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

機能別の見積もり作業

フィーチャー移行の複雑さノート
HTMLからPDFへ低レベルメソッドの直接置換
URLからPDFへ低レベルメソッドの直接置換
カスタム用紙サイズ低レベルプロパティベースの設定
マージン低レベル単位変換(インチ → mm)
PDFマージ低レベル静的メソッド呼び出し
ヘッダー/フッター中規模さまざまなプレースホルダ構文
待ち時間低レベル文字列からミリ秒へ
PDF/A変換低レベルパラメータの代わりにメソッド呼び出し

パラダイムシフト

このGotenbergの移行における基本的なシフトは、マルチパートのフォームデータによるHTTP API呼び出しからネイティブのC#メソッド呼び出しへの移行です:

Gotenberg:  Docker コンテナへの HTTP POST multipart/form-data
IronPDF:    C#オブジェクトの直接メソッド呼び出し

始める前に

前提条件

1..NETバージョン: IronPDFは.NET Framework 4.6.2+と.NET Core 3.1+ / .NET 5/6/7/8/9+をサポートしています。 2.ライセンスキーironpdf.comからIronPDFライセンスキーを取得してください。 3.インフラストラクチャーの撤去を計画する:移行後の廃止措置のためのGotenbergコンテナを文書化する。

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

# Find direct HTTP calls to Gotenberg
grep -r "gotenberg\|/forms/chromium\|/forms/libreoffice\|/forms/pdfengines" --include="*.cs" .

# Find GotenbergSharpApiClient usage
grep -r "GotenbergSharpClient\|Gotenberg.Sharp\|ChromiumRequest" --include="*.cs" .

# Find Docker/KubernetesGotenbergconfiguration
grep -r "gotenberg/gotenberg\|gotenberg:" --include="*.yml" --include="*.yaml" .
# Find direct HTTP calls to Gotenberg
grep -r "gotenberg\|/forms/chromium\|/forms/libreoffice\|/forms/pdfengines" --include="*.cs" .

# Find GotenbergSharpApiClient usage
grep -r "GotenbergSharpClient\|Gotenberg.Sharp\|ChromiumRequest" --include="*.cs" .

# Find Docker/KubernetesGotenbergconfiguration
grep -r "gotenberg/gotenberg\|gotenberg:" --include="*.yml" --include="*.yaml" .
SHELL

NuGetパッケージの変更

# RemoveGotenbergclient (if using)
dotnet remove package Gotenberg.Sharp.API.Client

# Install IronPDF
dotnet add package IronPdf
# RemoveGotenbergclient (if using)
dotnet remove package Gotenberg.Sharp.API.Client

# Install IronPDF
dotnet add package IronPdf
SHELL

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

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

ビフォア(Gotenberg):

Gotenbergはライセンス不要ですが、コンテナURLのあるDockerインフラストラクチャが必要です。

private readonly string _gotenbergUrl = "http://localhost:3000";
private readonly string _gotenbergUrl = "http://localhost:3000";
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

翻訳後(IronPDF):

// Set once at application startup
IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY";
// Set once at application startup
IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY";
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

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

// Before (Gotenberg)
using System.Net.Http;
using System.Threading.Tasks;
using System.IO;

// After (IronPDF)
using IronPdf;
using IronPdf.Rendering;
// Before (Gotenberg)
using System.Net.Http;
using System.Threading.Tasks;
using System.IO;

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

完全な API リファレンス

GotenbergエンドポイントからIronPDFへのマッピング

御殿場ルートIronPDF 同等物ノート
POST /forms/chromium/convert/htmlChromePdfRenderer.RenderHtmlAsPdf()のようになります。HTML文字列をPDFに
POST /forms/chromium/convert/urlChromePdfRenderer.RenderUrlAsPdf()のようにします。URLからPDFへ
POST /forms/pdfengines/mergePdfDocument.Merge()を使用してください。複数のPDFをマージする
POST /forms/pdfengines/convertpdf.SaveAs()を設定します。PDF/A変換
GET /health該当なし外部サービス不要

フォーム パラメータと RenderingOptions のマッピング

Gotenberg パラメータIronPDF プロパティ変換に関する注意事項
<コード>paperWidth</コード> (インチ)<コード>RenderingOptions.PaperSize</コード列挙型またはカスタムサイズを使用
<コード>paperHeight</コード> (インチ)<コード>RenderingOptions.PaperSize</コード列挙型またはカスタムサイズを使用
マージントップ (インチ)RenderingOptions.MarginTopmmは25.4倍
マージンボトム (インチ)RenderingOptions.MarginBottommmは25.4倍
<コード>printBackground</コードRenderingOptions.PrintHtmlBackgroundsを使用してください。ブーリアン
<コード>風景</コード<コード>RenderingOptions.PaperOrientation</コードランドスケープ列挙
<コード>waitDelay</コードRenderingOptions.RenderDelayとなります。ミリ秒への変換

コード移行の例

例1: 基本的なHTMLからPDFへ

ビフォア(Gotenberg):

using System;
using System.Net.Http;
using System.Threading.Tasks;
using System.IO;

class GotenbergExample
{
    static async Task Main()
    {
        var gotenbergUrl = "http://localhost:3000/forms/chromium/convert/html";

        using var client = new HttpClient();
        using var content = new MultipartFormDataContent();

        var html = "<html><body><h1>Hello from Gotenberg</h1></body></html>";
        content.Add(new StringContent(html), "files", "index.html");

        var response = await client.PostAsync(gotenbergUrl, content);
        var pdfBytes = await response.Content.ReadAsByteArrayAsync();

        await File.WriteAllBytesAsync("output.pdf", pdfBytes);
        Console.WriteLine("PDF generated successfully");
    }
}
using System;
using System.Net.Http;
using System.Threading.Tasks;
using System.IO;

class GotenbergExample
{
    static async Task Main()
    {
        var gotenbergUrl = "http://localhost:3000/forms/chromium/convert/html";

        using var client = new HttpClient();
        using var content = new MultipartFormDataContent();

        var html = "<html><body><h1>Hello from Gotenberg</h1></body></html>";
        content.Add(new StringContent(html), "files", "index.html");

        var response = await client.PostAsync(gotenbergUrl, content);
        var pdfBytes = await response.Content.ReadAsByteArrayAsync();

        await File.WriteAllBytesAsync("output.pdf", pdfBytes);
        Console.WriteLine("PDF generated successfully");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

翻訳後(IronPDF):

// NuGet: Install-Package IronPdf
using System;
using IronPdf;

class IronPdfExample
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        var html = "<html><body><h1>Hello from IronPDF</h1></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(html);

        pdf.SaveAs("output.pdf");
        Console.WriteLine("PDF generated successfully");
    }
}
// NuGet: Install-Package IronPdf
using System;
using IronPdf;

class IronPdfExample
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        var html = "<html><body><h1>Hello from IronPDF</h1></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(html);

        pdf.SaveAs("output.pdf");
        Console.WriteLine("PDF generated successfully");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

この違いは大きい:Gotenbergでは、HttpClientの構築、MultipartFormDataContentの構築、実行中のDockerコンテナへの非同期HTTP POSTの作成、バイト配列レスポンスの処理が必要です。 IronPDFはこれをChromePdfRendererメソッド呼び出しで3行に減らしました。ネットワークオーバーヘッドもコンテナ依存も非同期の複雑さもありません。 その他のレンダリングオプションについては、HTML to PDF documentationを参照してください。

例2: URLからPDFへの変換

ビフォア(Gotenberg):

using System;
using System.Net.Http;
using System.Threading.Tasks;
using System.IO;

class GotenbergUrlToPdf
{
    static async Task Main()
    {
        var gotenbergUrl = "http://localhost:3000/forms/chromium/convert/url";

        using var client = new HttpClient();
        using var content = new MultipartFormDataContent();

        content.Add(new StringContent("https://example.com"), "url");

        var response = await client.PostAsync(gotenbergUrl, content);
        var pdfBytes = await response.Content.ReadAsByteArrayAsync();

        await File.WriteAllBytesAsync("webpage.pdf", pdfBytes);
        Console.WriteLine("PDF from URL generated successfully");
    }
}
using System;
using System.Net.Http;
using System.Threading.Tasks;
using System.IO;

class GotenbergUrlToPdf
{
    static async Task Main()
    {
        var gotenbergUrl = "http://localhost:3000/forms/chromium/convert/url";

        using var client = new HttpClient();
        using var content = new MultipartFormDataContent();

        content.Add(new StringContent("https://example.com"), "url");

        var response = await client.PostAsync(gotenbergUrl, content);
        var pdfBytes = await response.Content.ReadAsByteArrayAsync();

        await File.WriteAllBytesAsync("webpage.pdf", pdfBytes);
        Console.WriteLine("PDF from URL generated successfully");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

翻訳後(IronPDF):

// NuGet: Install-Package IronPdf
using System;
using IronPdf;

class IronPdfUrlToPdf
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        var pdf = renderer.RenderUrlAsPdf("https://example.com");

        pdf.SaveAs("webpage.pdf");
        Console.WriteLine("PDF from URL generated successfully");
    }
}
// NuGet: Install-Package IronPdf
using System;
using IronPdf;

class IronPdfUrlToPdf
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        var pdf = renderer.RenderUrlAsPdf("https://example.com");

        pdf.SaveAs("webpage.pdf");
        Console.WriteLine("PDF from URL generated successfully");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Gotenbergのアプローチでは、異なるエンドポイント(/forms/chromium/convert/url)、URLをフォームフィールドとするマルチパートコンテンツの構築、非同期HTTPレスポンスの処理が必要です。 IronPDFのRenderUrlAsPdf()メソッドはURLを直接受け取り、PdfDocumentオブジェクトを同期的に返します。 URLからPDFへの変換の詳細については、こちらをご覧ください。

例3: カスタムの用紙サイズと余白

ビフォア(Gotenberg):

using System;
using System.Net.Http;
using System.Threading.Tasks;
using System.IO;

class GotenbergCustomSize
{
    static async Task Main()
    {
        var gotenbergUrl = "http://localhost:3000/forms/chromium/convert/html";

        using var client = new HttpClient();
        using var content = new MultipartFormDataContent();

        var html = "<html><body><h1>Custom Size PDF</h1></body></html>";
        content.Add(new StringContent(html), "files", "index.html");
        content.Add(new StringContent("8.5"), "paperWidth");
        content.Add(new StringContent("11"), "paperHeight");
        content.Add(new StringContent("0.5"), "marginTop");
        content.Add(new StringContent("0.5"), "marginBottom");

        var response = await client.PostAsync(gotenbergUrl, content);
        var pdfBytes = await response.Content.ReadAsByteArrayAsync();

        await File.WriteAllBytesAsync("custom-size.pdf", pdfBytes);
        Console.WriteLine("Custom size PDF generated successfully");
    }
}
using System;
using System.Net.Http;
using System.Threading.Tasks;
using System.IO;

class GotenbergCustomSize
{
    static async Task Main()
    {
        var gotenbergUrl = "http://localhost:3000/forms/chromium/convert/html";

        using var client = new HttpClient();
        using var content = new MultipartFormDataContent();

        var html = "<html><body><h1>Custom Size PDF</h1></body></html>";
        content.Add(new StringContent(html), "files", "index.html");
        content.Add(new StringContent("8.5"), "paperWidth");
        content.Add(new StringContent("11"), "paperHeight");
        content.Add(new StringContent("0.5"), "marginTop");
        content.Add(new StringContent("0.5"), "marginBottom");

        var response = await client.PostAsync(gotenbergUrl, content);
        var pdfBytes = await response.Content.ReadAsByteArrayAsync();

        await File.WriteAllBytesAsync("custom-size.pdf", pdfBytes);
        Console.WriteLine("Custom size PDF generated successfully");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

翻訳後(IronPDF):

// NuGet: Install-Package IronPdf
using System;
using IronPdf;
using IronPdf.Rendering;

class IronPdfCustomSize
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        renderer.RenderingOptions.PaperSize = PdfPaperSize.Letter;
        renderer.RenderingOptions.MarginTop = 50;
        renderer.RenderingOptions.MarginBottom = 50;

        var html = "<html><body><h1>Custom Size PDF</h1></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(html);

        pdf.SaveAs("custom-size.pdf");
        Console.WriteLine("Custom size PDF generated successfully");
    }
}
// NuGet: Install-Package IronPdf
using System;
using IronPdf;
using IronPdf.Rendering;

class IronPdfCustomSize
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        renderer.RenderingOptions.PaperSize = PdfPaperSize.Letter;
        renderer.RenderingOptions.MarginTop = 50;
        renderer.RenderingOptions.MarginBottom = 50;

        var html = "<html><body><h1>Custom Size PDF</h1></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(html);

        pdf.SaveAs("custom-size.pdf");
        Console.WriteLine("Custom size PDF generated successfully");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Gotenbergでは、マルチパートのフォームデータに文字列ベースのパラメータ("8.5""11""0.5")を追加する必要があります。 IronPDFはPdfPaperSize列挙型と数値マージン値で強く型付けされたプロパティを提供します。 IronPDFのマージンはミリメートル(50mm≈2インチ)ですが、Gotenbergはインチを使用していることに注意してください。


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

単位変換

このGotenberg移行で最も重要な変換はマージン単位です:

// Gotenberg: margins in inches
content.Add(new StringContent("0.5"), "marginTop");    // 0.5 inches
content.Add(new StringContent("1"), "marginBottom");   // 1 inch

// IronPDF: margins in millimeters
renderer.RenderingOptions.MarginTop = 12.7;    // 0.5 inches × 25.4 = 12.7mm
renderer.RenderingOptions.MarginBottom = 25.4; // 1 inch × 25.4 = 25.4mm
// Gotenberg: margins in inches
content.Add(new StringContent("0.5"), "marginTop");    // 0.5 inches
content.Add(new StringContent("1"), "marginBottom");   // 1 inch

// IronPDF: margins in millimeters
renderer.RenderingOptions.MarginTop = 12.7;    // 0.5 inches × 25.4 = 12.7mm
renderer.RenderingOptions.MarginBottom = 25.4; // 1 inch × 25.4 = 25.4mm
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

変換式ミリメートル = インチ × 25.4

同期 vs 非同期

Gotenberg は HTTP 通信のため、非同期操作が必要です:

// Gotenberg: Forced async due to network calls
var response = await client.PostAsync(gotenbergUrl, content);
var pdfBytes = await response.Content.ReadAsByteArrayAsync();

// IronPDF: Synchronous in-process execution
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");

// IronPDF: Async wrapper if needed
var pdf = await Task.Run(() => renderer.RenderHtmlAsPdf(html));
// Gotenberg: Forced async due to network calls
var response = await client.PostAsync(gotenbergUrl, content);
var pdfBytes = await response.Content.ReadAsByteArrayAsync();

// IronPDF: Synchronous in-process execution
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");

// IronPDF: Async wrapper if needed
var pdf = await Task.Run(() => renderer.RenderHtmlAsPdf(html));
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

エラーハンドリング

// Gotenberg: HTTP error handling
try
{
    var response = await client.PostAsync(gotenbergUrl, content);
    response.EnsureSuccessStatusCode();  // What if 500? 503? Timeout?
}
catch (HttpRequestException ex) { /* Network error */ }
catch (TaskCanceledException ex) { /* Timeout */ }

// IronPDF: Standard .NET exceptions
try
{
    var pdf = renderer.RenderHtmlAsPdf(html);
}
catch (Exception ex)
{
    Console.WriteLine($"PDF generation failed: {ex.Message}");
}
// Gotenberg: HTTP error handling
try
{
    var response = await client.PostAsync(gotenbergUrl, content);
    response.EnsureSuccessStatusCode();  // What if 500? 503? Timeout?
}
catch (HttpRequestException ex) { /* Network error */ }
catch (TaskCanceledException ex) { /* Timeout */ }

// IronPDF: Standard .NET exceptions
try
{
    var pdf = renderer.RenderHtmlAsPdf(html);
}
catch (Exception ex)
{
    Console.WriteLine($"PDF generation failed: {ex.Message}");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

インフラストラクチャの削除

移行後は、インフラストラクチャからGotenbergを削除してください:

# REMOVE from docker-compose.yml:
# services:
#   gotenberg:
#     image: gotenberg/gotenberg:8
#     ports:
#       - "3000:3000"
#     deploy:
#       resources:
#         limits:
#           memory: 2G
# REMOVE from docker-compose.yml:
# services:
#   gotenberg:
#     image: gotenberg/gotenberg:8
#     ports:
#       - "3000:3000"
#     deploy:
#       resources:
#         limits:
#           memory: 2G
YAML

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

レイテンシーの比較

手術ゴテンベルク(暖かい)Gotenberg(コールドスタート)IronPDF (ファーストレンダリング)IronPDF (後続)
シンプルなHTML150-300ms2~5秒1~2秒50-150ms
複雑なHTML500-1500ms3~7秒1.5-3秒200-800ms
URLレンダー1~5秒3~10秒1~5秒500ms-3s

インフラストラクチャのコスト削減

リソースGotenbergIronPDF
必要なコンテナ1-N (スケーリング)0
コンテナあたりのメモリ512MB-2GB該当なし
リクエストあたりのネットワーク・オーバーヘッド10-100ms0ms
ヘルスチェックのエンドポイント必須不要
ロードバランサ多くの場合不要

トラブルシューティング

問題 1: HttpClient パターンは必要ない

問題:コードはまだ HttpClient<//code> と MultipartFormDataContent<//code> を使用しています。

解決策ChromePdfRendererで完全に置き換えてください:

// Remove all of this:
// using var client = new HttpClient();
// using var content = new MultipartFormDataContent();
// content.Add(new StringContent(html), "files", "index.html");
// var response = await client.PostAsync(url, content);

// Replace with:
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
// Remove all of this:
// using var client = new HttpClient();
// using var content = new MultipartFormDataContent();
// content.Add(new StringContent(html), "files", "index.html");
// var response = await client.PostAsync(url, content);

// Replace with:
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

課題2:マージンの単位が間違っている

問題:移行後のPDFの余白が正しくない。

ソリューション:インチをミリメートルに変換する:

//Gotenbergused inches: "0.5"
//IronPDFuses millimeters: 0.5 × 25.4 = 12.7
renderer.RenderingOptions.MarginTop = 12.7;
//Gotenbergused inches: "0.5"
//IronPDFuses millimeters: 0.5 × 25.4 = 12.7
renderer.RenderingOptions.MarginTop = 12.7;
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

課題3:コンテナURLリファレンス

問題:コードにhttp://gotenberg:3000または同様のURLが含まれています。

解決策:コンテナのURL参照をすべて削除してください-IronPDFはプロセス内で実行されます:

// Remove:
// private readonly string _gotenbergUrl = "http://gotenberg:3000";

//IronPDFneeds no URL - it's in-process
var renderer = new ChromePdfRenderer();
// Remove:
// private readonly string _gotenbergUrl = "http://gotenberg:3000";

//IronPDFneeds no URL - it's in-process
var renderer = new ChromePdfRenderer();
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

移行チェックリスト

移行前

  • [ ] コードベース内のすべてのGotenbergHTTP 呼び出しをインベントリ化する。
  • [現在のGotenbergの設定(タイムアウト、余白、用紙サイズ)を文書化する。)
  • [すべてのDocker/Kubernetes Gotenbergコンフィギュレーションを特定する。
  • [IronPDF ライセンスキーの取得
  • [インフラ廃止計画

コードの移行

  • [ ] IronPdf NuGetパッケージをインストールします:dotnet add package IronPdf<//code>.
  • [ ] Gotenbergクライアントパッケージの削除
  • [ ] GotenbergへのすべてのHTTP呼び出しをIronPDFメソッド呼び出しに置き換えてください。
  • [マージンの単位をインチからミリメートルに変換してください。
  • [ ] エラー処理を更新する(HTTPエラー → .NET例外)。
  • [ ] 起動時にライセンスキーの初期化を追加する

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

  • [ ] Docker Compose / KubernetesからGotenbergを削除する
  • [ ] CI/CDパイプラインの更新(Gotenbergイメージプルの削除)
  • [ ] Gotenbergヘルスチェックの削除
  • [ ] 設定からGotenberg URLを削除する

テスティング

  • [HTMLからPDFへの変換テスト
  • [テストURLからPDFへの変換
  • [マージンとサイズの正確性を確認する
  • [負荷テスト
  • [ ] 最初のレンダーのウォームアップ時間のテスト

移行後

  • [ ]Gotenbergコンテナのデプロイを削除する
  • [アーカイブGotenberg設定ファイル
  • [ドキュメントの更新
  • [アプリケーションのメモリ使用量を監視する
  • [ネットワーク接続に障害がないことを確認してください。

結論

GotenbergからIronPdfに移行することで、Dockerインフラの複雑さを排除し、すべてのPDF操作からネットワーク遅延を取り除き、冗長なマルチパートフォームデータ構築をクリーンでタイプセーフなC#メソッド呼び出しに置き換えます。 その結果、IronPDFの組み込みChromiumエンジンによるHTML/CSS/JavaScriptのレンダリング機能を維持しながら、よりシンプルなデプロイ、より低いレイテンシー、より少ない障害点、より簡単なデバッグが可能になります。

この移行における主な変更点は以下のとおりです: 1.アーキテクチャ:REST API呼び出し → ネイティブC#メソッド 2.インフラ:Dockerコンテナ → NuGetパッケージ 3.単位: インチ → 余白のためのミリメートル 4.エラー処理: HTTPステータスコード → .NET例外 5.レイテンシ: ネットワーク・ラウンドトリップ → プロセス内実行

IronPDFドキュメントチュートリアルAPIリファレンスをご覧いただき、IronPDFへの移行を加速させてください。

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

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

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