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 監査は、外部の文書処理によって複雑になります。
- API キーのセキュリティ:漏洩した API キーにより、不正使用による料金がアカウントに請求される可能性があります。
8.ベンダー ロックイン:PDFBoltが利用規約を変更したり、サービスを停止したりした場合、アプリケーションは失敗します。
PDFBoltとIronPDFの比較
| 懸念事項 | PDFBolt | IronPDF |
|---|---|---|
| データロケーション | 外部サーバー | サーバーのみ |
| 使用制限 | 100ドル(無料)、その後1ドキュメントあたり | 無制限 |
| インターネットが必要です。 | はい、常に | なし |
| レイテンシーについて | ネットワーク往復 | ミリ秒 |
| コンプライアンス。 | 複雑(外部処理) | シンプル(ローカル処理) |
| コストモデル | ドキュメント単位 | 単発または年間 |
| オフライン操作。 | 不可能 | 完全サポート |
| APIの主なリスク | リーク = 課金 | ライセンスキー、課金リスクなし |
2025年と2026年まで.NET 10とC# 14の導入を計画しているチームにとって、IronPDFは完全なデータプライバシーを保証し、外部クラウドサービスへの依存を排除するセルフホスト基盤を提供します。
始める前に
前提条件
- .NET 環境: .NET Framework 4.6.2+ または .NET Core 3.1+ / .NET 5/6/7/8/9+
- NuGetアクセス: NuGetパッケージをインストールする機能
- 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ライセンス構成
// 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";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" .完全な API リファレンス
コア クラス マッピング
| PDFBolt | IronPDF | ノート |
|---|---|---|
new HtmlToPdfConverter(). | new ChromePdfRenderer(). | メインレンダラー |
| <コード>ページサイズ</コード | <コード>PdfPaperSize</コード | 用紙サイズの列挙 |
| (byte[]を返す) | <コード>PdfDocument</コード | リッチドキュメントオブジェクト |
変換メソッドのマッピング
| PDFBolt | IronPDF | ノート |
|---|---|---|
converter.ConvertHtmlString(html). | renderer.RenderHtmlAsPdf(html). | PdfDocument を返します。 |
converter.ConvertUrl(url). | renderer.RenderUrlAsPdf(url)のようにします。 | PdfDocument を返します。 |
出力メソッドのマッピング
| PDFBolt | IronPDF | ノート |
|---|---|---|
File.WriteAllBytes(path, pdf). | pdf.SaveAs(path)のようにします。 | 直接保存方式 |
| (pdfはbyte[]です)。 | <コード>pdf.BinaryData</コード | バイト配列を取得 |
| (マニュアルの流れ) | <コード>pdf.Stream</コード | ストリームプロパティ |
ページ構成マッピング
| PDFBolt | IronPDF | ノート |
|---|---|---|
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>. | 単位:ミリメートル |
ヘッダー/フッター プレースホルダー マッピング
| PDFBolt | IronPDF | ノート |
|---|---|---|
| <コード>{ページ番号}</コード | <コード>{ページ}</コード | 現在のページ |
{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);
}
}翻訳後(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");
}
}ここでの基本的な違いは、戻り値の型と保存パターンです。 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);
}
}翻訳後(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");
}
}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);
}
}翻訳後(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");
}
}この例は、ページ構成の違いを示しています。 PDFBoltは、コンバーターオブジェクトに直接プロパティを設定します(converter.PageSize, converter.MarginTop)。 IronPDFはレンダラー上でRenderingOptionsオブジェクトを使用します(renderer.RenderingOptions.PaperSize, renderer.RenderingOptions.MarginTop)。
主なマッピング
PageSize.A4→PdfPaperSize.A4(異なる列挙名)MarginTop = 20→RenderingOptions.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;クラス名の変更
主なクラス名は、コンバーターに焦点を当てたものからレンダラーに焦点を当てたものに変わります:
// PDFBolt
var converter = new HtmlToPdfConverter();
// IronPDF
var renderer = new ChromePdfRenderer();// PDFBolt
var converter = new HtmlToPdfConverter();
// IronPDF
var renderer = new ChromePdfRenderer();構成パターンの変更
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;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();ネットワーク エラー処理の削除
ローカル処理のため、ネットワークエラーが発生しません:
// 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新しい機能が利用可能です。
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");トラブルシューティング
問題 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();問題 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);課題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);問題 4: PageSize Enum が見つかりません
.問題: PageSize列挙型が存在しません。
解決策: IronPdf.RenderingのPdfPaperSizeを使用します。
// 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;課題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>");移行チェックリスト
移行前
- コードベース内のすべてのPDFBoltの使用状況をインベントリする
- 現在のページ構成設定(ページサイズ、余白)を文書化する
- 削除するAPIキー管理コードを特定する
- 削除するレート制限またはネットワークエラー処理をリストします
- IronPDFライセンスキーを取得する
パッケージの変更
PDFBoltNuGet パッケージを削除するIronPdfNuGet パッケージをインストールします:dotnet add package IronPdfusing IronPdf;名前空間を追加- 用紙サイズの列挙型に
using IronPdf.Rendering;を追加します
コードの変更
- 起動時にライセンスキー設定を追加する
HtmlToPdfConverterChromePdfRendererに置き換えるConvertHtmlString()をRenderHtmlAsPdf()に置き換えますConvertUrl()をRenderUrlAsPdf()に置き換えますFile.WriteAllBytes()をpdf.SaveAs()に置き換えます -<コード>ページサイズ</コードRenderingOptions.PaperSizeに更新します- マージン プロパティを
RenderingOptions.MarginTopなどに更新します。 - APIキー管理コードを削除する
- レート制限処理コードを削除
- ネットワークエラー処理を削除
移行後
- 設定ファイルからAPIキーを削除する
- シークレットマネージャーからAPIキーを削除する
- PDF出力を比較するすべてのテストを実行します
- ページのサイズと余白が正しく表示されることを確認する
- 新しい機能(透かし、セキュリティ、マージ)の追加を検討する






