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

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.io IronPDF
処理 クラウド(外部サーバー) ローカル(進行中)
データプライバシー 外部送信データ データはインフラから離れません
遅延 ネットワークのラウンドトリップ(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またはTextHeaderFooter HTML/テキストヘッダー
フッターオプション HtmlHeaderFooterまたはTextHeaderFooter HTML/テキストフッター
ページサイズ 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 単位:ミリメートル
ヘッダー.HtmlContent RenderingOptions.HtmlHeader.HtmlFragment ヘッダーHTML
フッター.HtmlContent RenderingOptions.HtmlFooter.HtmlFragmentを使用してください。 フッターHTML

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

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

コード移行の例

例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 プロパティに設定し、すべての設定を 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}を使用し、IronPDFは{total-pages}を使用します。 {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}{total-pages} (DIFFERENT!)
  • {title}{html-title} (DIFFERENT!) -{date}{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
  • 名前空間のインポートを更新する

コードの変更

  • 起動時にライセンスキー設定を追加する -HtmlToPdfConverterChromePdfRenderer`に置き換える -`コンバージョンオプションRenderingOptions`に変換する
  • Convert()RenderHtmlAsPdf()に更新
  • ConvertUrl()RenderUrlAsPdf()に更新
  • プレースホルダー構文を更新 ({total}</code>→<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ボットを作成したりして、技術に対する愛情と創造性を組み合わせています。