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

C#でKaizen.ioからIronPDFに移行する方法

Kaizen.ioのHTML-to-PDFからIronPDFに移行することで、.NET PDFワークフローをネットワーク遅延やデータプライバシーの懸念のあるクラウド依存のサービスから、データをインフラ内に保持するローカルのインプロセスライブラリに変換します。 このガイドでは、プロの.NET開発者向けに、外部APIへの依存やリクエストごとの価格設定を排除した、包括的でステップバイステップの移行パスを提供します。

Kaizen.ioからIronPDFへ移行する理由

クラウドベースのAPIの課題

Kaizen.io HTML-to-PDF は、他のクラウドベースの PDF サービスと同様に、本番アプリケーションに影響を与える制限があります:

1.クラウドへの依存:常時インターネット接続と外部サービスの可用性が必要です。 Kaizen.ioサービスにダウンタイムが発生すると、アプリケーションのPDF生成が停止します。

2.データ プライバシーに関する懸念:顧客データ、財務レポート、機密文書などの機密性の高い HTML コンテンツは、処理のためにサードパーティのサーバーに送信する必要があります。

3.ネットワーク遅延: PDF を生成するたびに、100 ~ 500 ミリ秒以上のネットワーク往復遅延が発生し、アプリケーションの応答時間に大きなオーバーヘッドが追加されます。

4.リクエストごとの価格設定:コストは使用量に応じて直接増減するため、大量の PDF を生成するとコストが高くなります。

5.レート制限:トラフィック量が多い期間に API スロットリングが発生すると、最も必要なときに PDF 生成が失敗したり、遅延したりする可能性があります。

6.ベンダー ロックイン: API の変更やサービスの中止のリスクにより、アプリケーションは外部のビジネス上の決定に対して脆弱になります。

Kaizen.ioとIronPDFの比較

フィーチャーKaizen.ioIronPDF
処理クラウド(外部サーバー)ローカル(進行中)
データプライバシー外部送信データデータはインフラから離れません
遅延ネットワークのラウンドトリップ(100-500ms以上)ローカル処理(50~200ミリ秒)
納期外部サービスに依存100%お客様の管理下
価格依頼ごとまたはサブスクリプション1回限りまたは年間ライセンス
オフラインモード不可全機能
料金の上限APIスロットリング制限なし
JavaScript限定サポートChromiumの完全な実行

2025年と2026年まで.NET 10とC# 14の採用を計画しているチームにとって、IronPDFは外部サービスへの依存をなくし、ローカル処理による将来性のある基盤を提供します。


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

機能別の見積もり作業

フィーチャー移行の複雑さノート
基本的なHTMLからPDFへ低レベルメソッドの直接置換
HTMLファイルからPDFへ低レベルメソッドの直接置換
URLからPDFへ低レベルメソッドの直接置換
ヘッダー/フッター低レベルプレースホルダーの構文変更
ページ設定低レベルプロパティのマッピング
APIキー管理低レベル完全に削除

パラダイムシフト

この Kaizen.io 移行における基本的な変化は、クラウド API 呼び出しからローカルのインプロセス レンダリングへの変更です。

Kaizen.io:  HtmlToPdfConverter → Convert(html) → byte[] (ネットワーク経由)
IronPDF:    ChromePdfRenderer → RenderHtmlAsPdf(html) → PdfDocument (ローカル)

始める前に

前提条件

  1. .NET 環境: .NET Framework 4.6.2+ または .NET Core 3.1+ / .NET 5/6/7/8/9+
  2. NuGetアクセス: NuGetパッケージをインストールする機能
  3. IronPDFライセンス: ironpdf.comからライセンスキーを取得します。

NuGetパッケージの変更

# Remove Kaizen.io package
dotnet remove package Kaizen.HtmlToPdf
dotnet remove package Kaizen.IO.HtmlToPdf

# Install IronPDF
dotnet add package IronPdf
# Remove Kaizen.io package
dotnet remove package Kaizen.HtmlToPdf
dotnet remove package Kaizen.IO.HtmlToPdf

# Install IronPDF
dotnet add package IronPdf
SHELL

ライセンス構成

// 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";
$vbLabelText   $csharpLabel

Kaizen.ioの使用法を特定する。

# Find all Kaizen.io references
grep -r "using Kaizen\|HtmlToPdfConverter\|ConversionOptions" --include="*.cs" .
grep -r "ConvertUrl\|ConvertHtml\|Kaizen" --include="*.cs" .
# Find all Kaizen.io references
grep -r "using Kaizen\|HtmlToPdfConverter\|ConversionOptions" --include="*.cs" .
grep -r "ConvertUrl\|ConvertHtml\|Kaizen" --include="*.cs" .
SHELL

完全な API リファレンス

クラスマッピング

Kaizen.ioクラスIronPDF 同等物ノート
<コード>HtmlToPdfConverter</コード<コード>ChromePdfRenderer</コードメインコンバータ
<コード>コンバージョンオプション</コード<コード>ChromePdfRenderOptions</コードRenderingOptions経由
<コード>ヘッダーオプション</コードHtmlHeaderFooterまたはTextHeaderFooterHTML/テキストヘッダー
<コード>フッターオプション</コードHtmlHeaderFooterまたはTextHeaderFooterHTML/テキストフッター
<コード>ページサイズ</コード<コード>PdfPaperSize</コード用紙サイズ列挙
<コード>オリエンテーション</コード<コード>PdfPaperOrientation</コードオリエンテーション列挙

メソッドマッピング

Kaizen.io メソッドIronPDF 同等物ノート
converter.Convert(html).renderer.RenderHtmlAsPdf(html).PdfDocument を返します。
converter.ConvertUrl(url).renderer.RenderUrlAsPdf(url)のようにします。直接URLサポート
File.WriteAllBytes(path, bytes).pdf.SaveAs(path)のようにします。直接保存方式

ConversionOptionsプロパティのマッピング

Kaizen.io プロパティIronPDF 同等物ノート
<コード>ページサイズ</コード<コード>RenderingOptions.PaperSize</コード列挙値
<コード>オリエンテーション</コード<コード>RenderingOptions.PaperOrientation</コードポートレート/風景
<コード>マージントップ</コードRenderingOptions.MarginTop単位:ミリメートル
<コード>マージンボトム</コードRenderingOptions.MarginBottom単位:ミリメートル
ヘッダー.HtmlContentRenderingOptions.HtmlHeader.HtmlFragmentヘッダーHTML
<コード>フッター.HtmlContent</コードRenderingOptions.HtmlFooter.HtmlFragmentを使用してください。フッターHTML

プレースホルダーのマッピング

Kaizen.io プレースホルダIronPDF プレースホルダーノート
<コード>{ページ}</コード<コード>{ページ}</コード現在のページ(同じ)
{total}<//code><コード>{総ページ数}</コード総ページ数(異なる)
{date}<//code>{date}<//code>現在の日付(同じ)
<コード>{タイトル}</コード{html-title}<//code>文書タイトル (異なります!)

コード移行の例

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

翻訳前 (Kaizen.io):

using Kaizen.IO;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        var html = "<html><body><h1>Hello World</h1></body></html>";
        var pdfBytes = converter.Convert(html);
        File.WriteAllBytes("output.pdf", pdfBytes);
    }
}
using Kaizen.IO;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        var html = "<html><body><h1>Hello World</h1></body></html>";
        var pdfBytes = converter.Convert(html);
        File.WriteAllBytes("output.pdf", pdfBytes);
    }
}
$vbLabelText   $csharpLabel

翻訳後(IronPDF):

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var html = "<html><body><h1>Hello World</h1></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System.IO;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var html = "<html><body><h1>Hello World</h1></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");
    }
}
$vbLabelText   $csharpLabel

Kaizen.ioのアプローチでは、HtmlToPdfConverterを作成し、Convert()を呼び出してバイト配列を取得し、File.WriteAllBytes()を使用して手動でバイトをファイルに書き込みます。 Kaizen.ioクラウドサービスへのネットワークラウンドトリップが含まれます。

IronPDFのChromePdfRendererはすべてをローカルで処理します。 RenderHtmlAsPdf()メソッドは、便利なSaveAs()メソッドを持つPdfDocumentオブジェクトを返します。 その他のレンダリングオプションについては、HTML to PDF documentationを参照してください。

例2: ページ設定でHTMLファイルをPDFに

翻訳前 (Kaizen.io):

using Kaizen.IO;
using System;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        var htmlContent = File.ReadAllText("input.html");
        var options = new ConversionOptions
        {
            PageSize = PageSize.A4,
            Orientation = Orientation.Portrait
        };
        var pdfBytes = converter.Convert(htmlContent, options);
        File.WriteAllBytes("document.pdf", pdfBytes);
    }
}
using Kaizen.IO;
using System;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        var htmlContent = File.ReadAllText("input.html");
        var options = new ConversionOptions
        {
            PageSize = PageSize.A4,
            Orientation = Orientation.Portrait
        };
        var pdfBytes = converter.Convert(htmlContent, options);
        File.WriteAllBytes("document.pdf", pdfBytes);
    }
}
$vbLabelText   $csharpLabel

翻訳後(IronPDF):

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
        renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait;
        var pdf = renderer.RenderHtmlFileAsPdf("input.html");
        pdf.SaveAs("document.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.IO;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
        renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait;
        var pdf = renderer.RenderHtmlFileAsPdf("input.html");
        pdf.SaveAs("document.pdf");
    }
}
$vbLabelText   $csharpLabel

Kaizen.ioのアプローチでは、File.ReadAllText()でHTMLファイルの内容を手動で読み取り、別のConversionOptionsオブジェクトを作成し、Convert()メソッドに両方を渡し、手動で結果のバイトをファイルに書き込む必要があります。

IronPDFはファイルを直接読み込む専用のRenderHtmlFileAsPdf()メソッドを提供します。 設定は、レンダラーの RenderingOptions<//code> プロパティに設定し、すべての設定を 1 か所にまとめておきます。 PdfPaperSize.A4PdfPaperOrientation.Portrait列挙型は、Kaizen.ioの同等のものから直接マッピングされています。

例3: ヘッダーとフッター付きのURLからPDFへ

翻訳前 (Kaizen.io):

using Kaizen.IO;
using System;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        var options = new ConversionOptions
        {
            Header = new HeaderOptions { HtmlContent = "<div style='text-align:center'>Company Header</div>" },
            Footer = new FooterOptions { HtmlContent = "<div style='text-align:center'>Page {page} of {total}</div>" },
            MarginTop = 20,
            MarginBottom = 20
        };
        var pdfBytes = converter.ConvertUrl("https://example.com", options);
        File.WriteAllBytes("webpage.pdf", pdfBytes);
    }
}
using Kaizen.IO;
using System;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        var options = new ConversionOptions
        {
            Header = new HeaderOptions { HtmlContent = "<div style='text-align:center'>Company Header</div>" },
            Footer = new FooterOptions { HtmlContent = "<div style='text-align:center'>Page {page} of {total}</div>" },
            MarginTop = 20,
            MarginBottom = 20
        };
        var pdfBytes = converter.ConvertUrl("https://example.com", options);
        File.WriteAllBytes("webpage.pdf", pdfBytes);
    }
}
$vbLabelText   $csharpLabel

翻訳後(IronPDF):

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.TextHeader.CenterText = "Company Header";
        renderer.RenderingOptions.TextFooter.CenterText = "Page {page} of {total-pages}";
        renderer.RenderingOptions.MarginTop = 20;
        renderer.RenderingOptions.MarginBottom = 20;
        var pdf = renderer.RenderUrlAsPdf("https://example.com");
        pdf.SaveAs("webpage.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.IO;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.TextHeader.CenterText = "Company Header";
        renderer.RenderingOptions.TextFooter.CenterText = "Page {page} of {total-pages}";
        renderer.RenderingOptions.MarginTop = 20;
        renderer.RenderingOptions.MarginBottom = 20;
        var pdf = renderer.RenderUrlAsPdf("https://example.com");
        pdf.SaveAs("webpage.pdf");
    }
}
$vbLabelText   $csharpLabel

この例は、いくつかの重要な移行の違いを示しています。 Kaizen.ioでは、ConversionOptions内のHeaderOptionsFooterOptionsオブジェクトがネストされ、それぞれにHtmlContentプロパティが必要です。 IronPdfは専用のCenterTextLeftTextRightTextプロパティを持つ、よりクリーンなTextHeaderTextFooter構成を提供します。

重要な注意:プレースホルダーの構文が異なります。 Kaizen.ioは総ページ数に{total}<//code>を使用し、IronPDFは{total-pages}<//code>を使用します。 {total}をコードベースで検索し、{total-pages}に置き換えてください。

IronPdfのRenderUrlAsPdf()メソッドは、Chromiumエンジンを介してJavaScriptを実行し、どんなURLでも直接レンダリングします。 URLからPDFへの変換ヘッダーとフッターについては、こちらをご覧ください。


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

プレースホルダーの構文の変更

ヘッダーとフッターを移行する際に最も重要な変更は、プレースホルダーの構文です:

// Kaizen.io placeholders:
"Page {page} of {total}"

//IronPDFplaceholders:
"Page {page} of {total-pages}"
// Kaizen.io placeholders:
"Page {page} of {total}"

//IronPDFplaceholders:
"Page {page} of {total-pages}"
$vbLabelText   $csharpLabel

完全なプレースホルダ・マッピング:

  • {page}<//code> → <code>{page}(同上)
  • {total}<//code> → {total-pages}<//code> (DIFFERENT!)
  • {title}<//code> → {html-title}<//code> (DIFFERENT!) -{date}<//code>→ {date}(同じ)。
  • {time}<//code> → <code>{time}(同上)

返品タイプの変更

Kaizen.ioはbyte[]を直接返します。 IronPDFはPdfDocumentオブジェクトを返します:

// Kaizen.io returns byte[]
byte[] pdfBytes = converter.Convert(html);
File.WriteAllBytes("output.pdf", pdfBytes);

//IronPDFreturns PdfDocument
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");           // Direct save
byte[] bytes = pdf.BinaryData;      // Or get bytes if needed
// Kaizen.io returns byte[]
byte[] pdfBytes = converter.Convert(html);
File.WriteAllBytes("output.pdf", pdfBytes);

//IronPDFreturns PdfDocument
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");           // Direct save
byte[] bytes = pdf.BinaryData;      // Or get bytes if needed
$vbLabelText   $csharpLabel

APIキー管理の削除

Kaizen.ioは、リクエストごとのAPIキー認証が必要です。 IronPdfはアプリケーション起動時に一度だけ設定されたライセンスキーを使用します:

// DELETE this Kaizen.io pattern:
var converter = new HtmlToPdfConverter("YOUR_API_KEY");

// IronPDF: Set once at startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
var renderer = new ChromePdfRenderer();  // No API key needed
// DELETE this Kaizen.io pattern:
var converter = new HtmlToPdfConverter("YOUR_API_KEY");

// IronPDF: Set once at startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
var renderer = new ChromePdfRenderer();  // No API key needed
$vbLabelText   $csharpLabel

ネットワーク エラー処理の削除

リトライロジック、レートリミットの処理、ネットワークタイムアウトコードは削除してください-IronPDFはローカルで処理します:

// DELETE this Kaizen.io pattern:
int retries = 3;
while (retries > 0)
{
    try
    {
        return converter.Convert(html);
    }
    catch (RateLimitException)
    {
        retries--;
        Thread.Sleep(1000);
    }
}

// IronPDF: Just call the method
return renderer.RenderHtmlAsPdf(html).BinaryData;
// DELETE this Kaizen.io pattern:
int retries = 3;
while (retries > 0)
{
    try
    {
        return converter.Convert(html);
    }
    catch (RateLimitException)
    {
        retries--;
        Thread.Sleep(1000);
    }
}

// IronPDF: Just call the method
return renderer.RenderHtmlAsPdf(html).BinaryData;
$vbLabelText   $csharpLabel

トラブルシューティング

問題 1: HtmlToPdfConverter が見つかりません。

問題:IronPDFにHtmlToPdfConverterクラスが存在しません。

解決策: ChromePdfRendererに置き換えます:

// Kaizen.io
var converter = new HtmlToPdfConverter();

// IronPDF
var renderer = new ChromePdfRenderer();
// Kaizen.io
var converter = new HtmlToPdfConverter();

// IronPDF
var renderer = new ChromePdfRenderer();
$vbLabelText   $csharpLabel

課題2: ConversionOptionsが見つかりません

問題:IronPDFにConversionOptionsクラスが存在しません。

解決策:レンダラーでRenderingOptions使用します。

// Kaizen.io
var options = new ConversionOptions { PageSize = PageSize.A4 };
converter.Convert(html, options);

// IronPDF
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderHtmlAsPdf(html);
// Kaizen.io
var options = new ConversionOptions { PageSize = PageSize.A4 };
converter.Convert(html, options);

// IronPDF
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderHtmlAsPdf(html);
$vbLabelText   $csharpLabel

課題3:ページ番号が機能しない

問題:フッターにページ数ではなく、文字数{total}が表示されます。

解決策:プレースホルダー構文を更新します。

// Kaizen.io syntax (won't work)
"Page {page} of {total}"

//IronPDFsyntax
"Page {page} of {total-pages}"
// Kaizen.io syntax (won't work)
"Page {page} of {total}"

//IronPDFsyntax
"Page {page} of {total-pages}"
$vbLabelText   $csharpLabel

課題4: 変換メソッドが見つかりません

問題: ChromePdfRendererConvert()メソッドが存在しません。

解決策: RenderHtmlAsPdf()を使用します。

// Kaizen.io
var pdfBytes = converter.Convert(html);

// IronPDF
var pdf = renderer.RenderHtmlAsPdf(html);
var pdfBytes = pdf.BinaryData;
// Kaizen.io
var pdfBytes = converter.Convert(html);

// IronPDF
var pdf = renderer.RenderHtmlAsPdf(html);
var pdfBytes = pdf.BinaryData;
$vbLabelText   $csharpLabel

課題5:最初のレンダリングが遅い

問題:最初の PDF 生成には 1 ~ 3 秒かかります。

解決策:IronPDFは、初めて使用するときに Chromium を初期化します。 アプリケーション起動時のウォームアップ

// In Program.cs or Startup.cs:
new ChromePdfRenderer().RenderHtmlAsPdf("<html></html>");
// In Program.cs or Startup.cs:
new ChromePdfRenderer().RenderHtmlAsPdf("<html></html>");
$vbLabelText   $csharpLabel

移行チェックリスト

移行前

  • Kaizen.io のすべてのusingステートメントを識別する
  • 使用されるドキュメントConversionOptions設定
  • ノートのヘッダー/フッターテンプレートとプレースホルダー
  • APIキーの場所を一覧表示する(削除対象)
  • 再試行/レート制限ロジックを確認する(削除する)
  • IronPDFライセンスキーを取得する

パッケージの変更

  • Kaizen.HtmlToPdfパッケージを削除する
  • IronPdf NuGet パッケージをインストールします: dotnet add package IronPdf
  • 名前空間のインポートを更新する

コードの変更

  • 起動時にライセンスキー設定を追加する -<コード>HtmlToPdfConverter</コードChromePdfRendererに置き換える -<コード>コンバージョンオプション</コードRenderingOptionsに変換する
  • Convert()RenderHtmlAsPdf()に更新
  • ConvertUrl()RenderUrlAsPdf()に更新
  • プレースホルダー構文を更新 ({total}<//code>→<コード>{総ページ数}</コード)
  • File.WriteAllBytes()pdf.SaveAs()に置き換えます
  • APIキー設定を削除する
  • 再試行/レート制限ロジックを削除
  • API呼び出しのネットワークエラー処理を削除

テスティング

  • すべてのPDF生成パスをテストする
  • ヘッダー/フッターのレンダリングを確認する
  • プレースホルダーのレンダリングを確認する
  • 余白とページサイズを検証する
  • オフライン機能をテストする (新機能!)
  • ベンチマークパフォーマンスの向上

移行後

  • 設定からKaizen.io APIキーを削除する
  • 環境変数を更新する
  • レート制限設定を削除する
  • 更新監視/アラート

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

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

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