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

C#でPDFBoltからIronPDFへ移行する方法

PDFBoltからIronPDFへの移行は、あなたの.NET PDFワークフローを、外部ドキュメント処理によるクラウドオンリーのSaaSサービスから、完全なデータプライバシーと無制限のローカル生成によるセルフホストライブラリに移行します。 このガイドは、PDFBoltが提供できないPDF操作機能へのアクセスを得ながら、ネットワーク依存、使用制限、外部データ転送を排除する、包括的でステップバイステップの移行パスを提供します。

なぜPDFBoltからIronPDFへ移行するのか

クラウドのみの問題

PDFBoltは、外部サーバーでドキュメントを処理するクラウド専用のSaaSプラットフォームです。 迅速なプロトタイプには便利ですが、このアーキテクチャーは本番アプリケーションには大きな課題をもたらします:

1.クラウドのみの処理:すべてのドキュメントは外部サーバーを経由します。セルフホストのオプションは利用できないため、データとプロセスをより細かく制御する必要がある企業の妨げになる可能性があります。

2.データ プライバシーのリスク:機密文書 (契約書、医療記録、財務データ) を外部に送信する必要があります。 機密情報を扱う企業には、正当な懸念があります。

3.使用制限:無料利用枠は 1 か月あたり 100 ドキュメントまでに制限されており、大規模な企業には不十分な可能性があります。 本番作業では、ドキュメントごとに料金を支払う必要があります。

4.ネットワーク依存性:インターネットの停止やPDFBoltのダウンタイムが発生すると、PDF の生成が完全に停止します。

5.レイテンシ:ネットワークの往復により、ローカル処理と比較して、すべての変換に数秒が追加されます。

6.コンプライアンスの問題: GDPR、HIPAA、SOC2 監査は、外部の文書処理によって複雑になります。

  1. API キーのセキュリティ:漏洩した API キーにより、不正使用による料金がアカウントに請求される可能性があります。

8.ベンダー ロックイン:PDFBoltが利用規約を変更したり、サービスを停止したりした場合、アプリケーションは失敗します。

PDFBoltとIronPDFの比較

懸念事項PDFBoltIronPDF
データロケーション外部サーバーサーバーのみ
使用制限100ドル(無料)、その後1ドキュメントあたり無制限
インターネットが必要です。はい、常になし
レイテンシーについてネットワーク往復ミリ秒
コンプライアンス複雑(外部処理)シンプル(ローカル処理)
コストモデルドキュメント単位単発または年間
オフライン操作不可能完全サポート
APIの主なリスクリーク = 課金ライセンスキー、課金リスクなし

2025年と2026年まで.NET 10とC# 14の導入を計画しているチームにとって、IronPDFは完全なデータプライバシーを保証し、外部クラウドサービスへの依存を排除するセルフホスト基盤を提供します。


始める前に

前提条件

  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 PDFBolt
dotnet remove package PDFBolt

# Install IronPDF
dotnet add package IronPdf
# Remove PDFBolt
dotnet remove package PDFBolt

# 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

PDFBoltの使い方を特定する

# Find allPDFBoltreferences
grep -r "PDFBolt\|HtmlToPdfConverter\|ConvertHtmlString\|ConvertUrl" --include="*.cs" .

# Find API key references
grep -r "PDFBOLT\|ApiKey" --include="*.cs" --include="*.json" --include="*.config" .
# Find allPDFBoltreferences
grep -r "PDFBolt\|HtmlToPdfConverter\|ConvertHtmlString\|ConvertUrl" --include="*.cs" .

# Find API key references
grep -r "PDFBOLT\|ApiKey" --include="*.cs" --include="*.json" --include="*.config" .
SHELL

完全な API リファレンス

コア クラス マッピング

PDFBoltIronPDFノート
new HtmlToPdfConverter().new ChromePdfRenderer().メインレンダラー
<コード>ページサイズ</コード<コード>PdfPaperSize</コード用紙サイズの列挙
(byte[]を返す)<コード>PdfDocument</コードリッチドキュメントオブジェクト

変換メソッドのマッピング

PDFBoltIronPDFノート
converter.ConvertHtmlString(html).renderer.RenderHtmlAsPdf(html).PdfDocument を返します。
converter.ConvertUrl(url).renderer.RenderUrlAsPdf(url)のようにします。PdfDocument を返します。

出力メソッドのマッピング

PDFBoltIronPDFノート
File.WriteAllBytes(path, pdf).pdf.SaveAs(path)のようにします。直接保存方式
(pdfはbyte[]です)<コード>pdf.BinaryData</コードバイト配列を取得
(マニュアルの流れ)<コード>pdf.Stream</コードストリームプロパティ

ページ構成マッピング

PDFBoltIronPDFノート
converter.PageSize = PageSize.A4.renderer.RenderingOptions.PaperSize=PdfPaperSize.A4用紙サイズ列挙
converter.MarginTop = 20.renderer.RenderingOptions.MarginTop = 20<//code>.単位:ミリメートル
converter.MarginBottom = 20.renderer.RenderingOptions.MarginBottom = 20<//code>.単位:ミリメートル
converter.MarginLeft = 15.renderer.RenderingOptions.MarginLeft = 15<//code>.単位:ミリメートル
converter.MarginRight = 15.renderer.RenderingOptions.MarginRight = 15<//code>.単位:ミリメートル

ヘッダー/フッター プレースホルダー マッピング

PDFBoltIronPDFノート
<コード>{ページ番号}</コード<コード>{ページ}</コード現在のページ
{totalPages}<//code><コード>{総ページ数}</コード総ページ数
{date}<//code>{date}<//code>同じ
<コード>{タイトル}</コード{html-title}<//code>文書タイトル

コード移行の例

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

翻訳前 (PDFBolt):

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

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        var html = "<html><body><h1>Hello World</h1></body></html>";
        var pdf = converter.ConvertHtmlString(html);
        File.WriteAllBytes("output.pdf", pdf);
    }
}
// NuGet: Install-Package PDFBolt
using PDFBolt;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        var html = "<html><body><h1>Hello World</h1></body></html>";
        var pdf = converter.ConvertHtmlString(html);
        File.WriteAllBytes("output.pdf", pdf);
    }
}
$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

ここでの基本的な違いは、戻り値の型と保存パターンです。 PDFBoltのHtmlToPdfConverter.ConvertHtmlString()byte[]を返しますが、File.WriteAllBytes()を使って手動でディスクに書き込む必要があります。 そのためには、System.IOをインポートし、ファイル操作を自分で処理する必要があります。

IronPDFのChromePdfRenderer.RenderHtmlAsPdf()は組み込みのSaveAs()メソッドを持つPdfDocumentオブジェクトを返します。 このオブジェクト指向のアプローチは、保存する前にPDFを操作(透かしを追加したり、文書をマージしたり、セキュリティを追加したり)できるという、さらなる利点を提供します。 既存のコードとの互換性のために生のバイトが必要な場合は、pdf.BinaryDataを使用してください。 その他のレンダリングオプションについては、HTML to PDF documentationを参照してください。

例2: URLからPDFへの変換

翻訳前 (PDFBolt):

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

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        var pdf = converter.ConvertUrl("https://www.example.com");
        File.WriteAllBytes("webpage.pdf", pdf);
    }
}
// NuGet: Install-Package PDFBolt
using PDFBolt;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        var pdf = converter.ConvertUrl("https://www.example.com");
        File.WriteAllBytes("webpage.pdf", pdf);
    }
}
$vbLabelText   $csharpLabel

翻訳後(IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
        pdf.SaveAs("webpage.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
        pdf.SaveAs("webpage.pdf");
    }
}
$vbLabelText   $csharpLabel

URL変換のためのPDFBoltパターンは、HTML変換と同じアプローチに従います:ConvertUrl()byte[]を返し、保存にはFile.WriteAllBytes()が必要です。 PDFBoltは、すでにURLから取得しているにもかかわらず、サーバーへのネットワークラウンドトリップが必要であることに注意してください。

IronPDFのRenderUrlAsPdf()メソッドは組み込みのSaveAs()メソッドでPdfDocumentを返します。 ここでの重要な利点は、IronPdfがURLフェッチとPDFレンダリングをローカルで行うことです。 IronPDFバージョンはこの単純なケースのためにusing System.IO;を必要としないことに注目してください。 URLからPDFへの変換の詳細については、こちらをご覧ください。

例3: カスタムページ設定のHTMLファイル

翻訳前 (PDFBolt):

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

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        converter.PageSize = PageSize.A4;
        converter.MarginTop = 20;
        converter.MarginBottom = 20;
        var html = File.ReadAllText("input.html");
        var pdf = converter.ConvertHtmlString(html);
        File.WriteAllBytes("output.pdf", pdf);
    }
}
// NuGet: Install-Package PDFBolt
using PDFBolt;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        converter.PageSize = PageSize.A4;
        converter.MarginTop = 20;
        converter.MarginBottom = 20;
        var html = File.ReadAllText("input.html");
        var pdf = converter.ConvertHtmlString(html);
        File.WriteAllBytes("output.pdf", pdf);
    }
}
$vbLabelText   $csharpLabel

翻訳後(IronPDF):

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
        renderer.RenderingOptions.MarginTop = 20;
        renderer.RenderingOptions.MarginBottom = 20;
        var html = File.ReadAllText("input.html");
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
using System.IO;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
        renderer.RenderingOptions.MarginTop = 20;
        renderer.RenderingOptions.MarginBottom = 20;
        var html = File.ReadAllText("input.html");
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");
    }
}
$vbLabelText   $csharpLabel

この例は、ページ構成の違いを示しています。 PDFBoltは、コンバーターオブジェクトに直接プロパティを設定します(converter.PageSize, converter.MarginTop)。 IronPDFはレンダラー上でRenderingOptionsオブジェクトを使用します(renderer.RenderingOptions.PaperSize, renderer.RenderingOptions.MarginTop)。

主なマッピング

  • PageSize.A4PdfPaperSize.A4 (異なる列挙名)
  • MarginTop = 20RenderingOptions.MarginTop = 20 (RenderingOptions 経由)

どちらもマージン値にはミリメートルを使用しているため、既存のマージン値をそのまま転送する必要があります。 PdfPaperSize列挙型にアクセスするには、IronPdf.Rendering名前空間が必要です。 その他のページ設定オプションについては、rendering options documentationを参照してください。


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

返品タイプの変更

PDFBoltはbyte[]を直接返します; IronPDFはPdfDocumentを返します:

//PDFBoltpattern:
byte[] pdf = converter.ConvertHtmlString(html);
File.WriteAllBytes("output.pdf", pdf);

//IronPDFpattern:
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");

// Or if you need bytes:
byte[] pdfBytes = renderer.RenderHtmlAsPdf(html).BinaryData;
//PDFBoltpattern:
byte[] pdf = converter.ConvertHtmlString(html);
File.WriteAllBytes("output.pdf", pdf);

//IronPDFpattern:
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");

// Or if you need bytes:
byte[] pdfBytes = renderer.RenderHtmlAsPdf(html).BinaryData;
$vbLabelText   $csharpLabel

クラス名の変更

主なクラス名は、コンバーターに焦点を当てたものからレンダラーに焦点を当てたものに変わります:

// PDFBolt
var converter = new HtmlToPdfConverter();

// IronPDF
var renderer = new ChromePdfRenderer();
// PDFBolt
var converter = new HtmlToPdfConverter();

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

構成パターンの変更

PDFBoltはダイレクトプロパティを使用しています; IronPDFはRenderingOptionsを使用します:

// PDFBolt: Direct properties
converter.PageSize = PageSize.A4;
converter.MarginTop = 20;

// IronPDF: Via RenderingOptions
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 20;
// PDFBolt: Direct properties
converter.PageSize = PageSize.A4;
converter.MarginTop = 20;

// IronPDF: Via RenderingOptions
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 20;
$vbLabelText   $csharpLabel

APIキー消去

PDFBoltでは、リクエストごとのAPIキー管理が必要です; IronPDFは1回限りのライセンスキーを使用します:

// PDFBolt: API key per client (security risk if leaked)
var apiKey = config["PDFBolt:ApiKey"];
var client = new Client(apiKey);

// IronPDF: License key once at startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
var renderer = new ChromePdfRenderer();
// PDFBolt: API key per client (security risk if leaked)
var apiKey = config["PDFBolt:ApiKey"];
var client = new Client(apiKey);

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

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

ローカル処理のため、ネットワークエラーが発生しません:

// PDFBolt: Network error handling required
catch (HttpRequestException ex)
catch (TaskCanceledException)
catch (TimeoutException)

// IronPDF: Remove network-specific catches entirely
// PDFBolt: Network error handling required
catch (HttpRequestException ex)
catch (TaskCanceledException)
catch (TimeoutException)

// IronPDF: Remove network-specific catches entirely
$vbLabelText   $csharpLabel

新しい機能が利用可能です。

IronPDFに移行すると、PDFBoltでは提供できない機能を得ることができます:

// PDF Merging (not available in PDFBolt)
var merged = PdfDocument.Merge(pdf1, pdf2);

// Watermarks (not available in PDFBolt)
pdf.ApplyWatermark("<h1 style='opacity:0.3;'>DRAFT</h1>");

// Password Protection (not available in PDFBolt)
pdf.SecuritySettings.UserPassword = "secret";

// Text Extraction (not available in PDFBolt)
string text = pdf.ExtractAllText();

// PDF to Images (not available in PDFBolt)
pdf.RasterizeToImageFiles("page_*.png");
// PDF Merging (not available in PDFBolt)
var merged = PdfDocument.Merge(pdf1, pdf2);

// Watermarks (not available in PDFBolt)
pdf.ApplyWatermark("<h1 style='opacity:0.3;'>DRAFT</h1>");

// Password Protection (not available in PDFBolt)
pdf.SecuritySettings.UserPassword = "secret";

// Text Extraction (not available in PDFBolt)
string text = pdf.ExtractAllText();

// PDF to Images (not available in PDFBolt)
pdf.RasterizeToImageFiles("page_*.png");
$vbLabelText   $csharpLabel

トラブルシューティング

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

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

解決策: ChromePdfRendererを使用する:

// PDFBolt
var converter = new HtmlToPdfConverter();

// IronPDF
var renderer = new ChromePdfRenderer();
// PDFBolt
var converter = new HtmlToPdfConverter();

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

問題 2: ConvertHtmlString が見つかりません。

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

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

// PDFBolt
var pdf = converter.ConvertHtmlString(html);

// IronPDF
var pdf = renderer.RenderHtmlAsPdf(html);
// PDFBolt
var pdf = converter.ConvertHtmlString(html);

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

課題3:ConvertUrlが見つかりません

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

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

// PDFBolt
var pdf = converter.ConvertUrl(url);

// IronPDF
var pdf = renderer.RenderUrlAsPdf(url);
// PDFBolt
var pdf = converter.ConvertUrl(url);

// IronPDF
var pdf = renderer.RenderUrlAsPdf(url);
$vbLabelText   $csharpLabel

問題 4: PageSize Enum が見つかりません

.

問題: PageSize列挙型が存在しません。

解決策: IronPdf.RenderingPdfPaperSizeを使用します。

// PDFBolt
converter.PageSize = PageSize.A4;

// IronPDF
using IronPdf.Rendering;
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
// PDFBolt
converter.PageSize = PageSize.A4;

// IronPDF
using IronPdf.Rendering;
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
$vbLabelText   $csharpLabel

課題5:最初のPDF生成が遅い

問題:初期レンダリングに予想よりも時間がかかります。

解決策: Chromium エンジンは初回使用時に初期化されます。 必要に応じて、事前にウォームアップしてください:

// Warm up during application startup
var renderer = new ChromePdfRenderer();
renderer.RenderHtmlAsPdf("<html><body></body></html>");
// Warm up during application startup
var renderer = new ChromePdfRenderer();
renderer.RenderHtmlAsPdf("<html><body></body></html>");
$vbLabelText   $csharpLabel

移行チェックリスト

移行前

  • コードベース内のすべてのPDFBoltの使用状況をインベントリする
  • 現在のページ構成設定(ページサイズ、余白)を文書化する
  • 削除するAPIキー管理コードを特定する
  • 削除するレート制限またはネットワークエラー処理をリストします
  • IronPDFライセンスキーを取得する

パッケージの変更

  • PDFBolt NuGet パッケージを削除する
  • IronPdf NuGet パッケージをインストールします: dotnet add package IronPdf
  • using IronPdf;名前空間を追加
  • 用紙サイズの列挙型にusing IronPdf.Rendering;を追加します

コードの変更

  • 起動時にライセンスキー設定を追加する
  • HtmlToPdfConverter ChromePdfRendererに置き換える
  • ConvertHtmlString()RenderHtmlAsPdf()に置き換えます
  • ConvertUrl()RenderUrlAsPdf()に置き換えます
  • File.WriteAllBytes()pdf.SaveAs()に置き換えます -<コード>ページサイズ</コードRenderingOptions.PaperSizeに更新します
  • マージン プロパティをRenderingOptions.MarginTopなどに更新します。
  • APIキー管理コードを削除する
  • レート制限処理コードを削除
  • ネットワークエラー処理を削除

移行後

  • 設定ファイルからAPIキーを削除する
  • シークレットマネージャーからAPIキーを削除する
  • PDF出力を比較するすべてのテストを実行します
  • ページのサイズと余白が正しく表示されることを確認する
  • 新しい機能(透かし、セキュリティ、マージ)の追加を検討する

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

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

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