IRONSOFTWAREHOME
ビデオ

Convert CSHTML to PDF in ASP.NET Core MVC with IronPDF

Curtis Chau
Curtis Chau
Updated: 2026年7月19日

PDFBoltからIronPDFへの移行は、クラウド専用のSaaS RESTサービスから自己ホストのライブラリへ.NET PDFワークフローを移動し、ローカルドキュメント処理とドキュメントごとの制限をなくします。 このガイドは、ネットワーク依存性、月次使用制限、外部データ送信を排除し、PDFBoltが提供しないPDF操作機能を追加するステップバイステップの移行パスを提供します。

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

クラウドのみの問題

PDFBoltは、REST APIとして公開されているクラウド専用のSaaSプラットフォームです; .NET SDKが公式に提供されておらず、PDFBolt NuGetパッケージもありません。 統合はHttpClientを用いて手作業で行われます。 簡単なプロトタイプに便利ですが、このアーキテクチャは製品アプリケーションに課題をもたらします:

  1. クラウド専用処理: すべてのドキュメントはPDFBoltのサーバーを通過し、自己ホストオプションがないため、データフローの管理を必要とするチームには障壁となる可能性があります。

  2. データプライバシーの考慮事項: 敏感なドキュメント(契約書、医療記録、財務データ)は外部に送信されます。 規制されたデータを扱う企業は、合法的なレビューの懸念を抱えるでしょう。

  3. 使用制限: 無料ティアは月100ドキュメント、20リクエスト/分、1同時実行リクエストに制限されており、製品ワークロードには十分でないかもしれません。 有料ティア(pdfbolt.com/pricing による)は月額$19から月額$249まで拡張します。

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

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

  1. コンプライアンスレビュー: GDPR、HIPAA、およびSOC2の監査は、外部ドキュメント処理が関与する場合は追加のドキュメントを必要とすることが一般的です。

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

  3. ベンダーロックイン: PDFBoltが契約条件を変更したり閉鎖したりすると、アプリケーションが動作しなくなります。

PDFBoltとIronPDFの比較

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

IronPDFはモダンな.NET上で自己ホストの基盤を提供し、ドキュメント処理をローカルに維持し、外部クラウドサービスへの依存を排除します。


始める前に

前提条件

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

NuGetパッケージの変更

PDFBoltには公式 for .NET SDKとPDFBolt NuGetパッケージがないため、アンインストールするものはありません。 PDFBolt側のクリーンアップは、手作業で生成されたHttpClientラッパーとリクエスト/レスポンスDTOを削除することです。 その後IronPDFをインストールします:

# InstallIronPDF(replaces the hand-rolled HttpClient wrapper)
dotnet add package IronPdf
SHELL

ライセンス構成

// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

PDFBoltの使い方を特定する

# Find allPDFBoltREST calls
grep -rE "api\.pdfbolt\.com|API-KEY|/v1/direct" --include="*.cs" .

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

完全な API リファレンス

コアコンセプトのマッピング

PDFBolt(REST)IronPDF
HttpClient + API-KEY ヘッダーnew ChromePdfRenderer()
JSONリクエスト本文renderer.RenderingOptions
POST https://api.pdfbolt.com/v1/directrenderer.RenderHtmlAsPdf(...) / RenderUrlAsPdf(...)
レスポンス byte[]PdfDocument

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

PDFBolt(REST)IronPDF
POST /v1/direct with { "html": <base64> }renderer.RenderHtmlAsPdf(html)
POST /v1/direct with { "url": "..." }renderer.RenderUrlAsPdf(url)

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

PDFBolt(REST)IronPDF
await response.Content.ReadAsByteArrayAsync() then File.WriteAllBytespdf.SaveAs(path)
await response.Content.ReadAsByteArrayAsync()pdf.BinaryData

ページ構成マッピング

PDFBolt JSONIronPDF
"format": "A4"renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
"margin": { "top": "20mm" }renderer.RenderingOptions.MarginTop = 20
"margin": { "bottom": "20mm" }renderer.RenderingOptions.MarginBottom = 20
"margin": { "left": "15mm" }renderer.RenderingOptions.MarginLeft = 15
"margin": { "right": "15mm" }renderer.RenderingOptions.MarginRight = 15

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

PDFBolt (base64エンコードされたheaderTemplate / footerTemplate内)IronPDF (HtmlFragment トークン)
<span class="pageNumber"></span>{page}
<span class="totalPages"></span>{total-pages}
<span class="date"></span>{date}
<span class="title"></span>{html-title}

コード移行の例

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

ビフォー(PDFBolt — HttpClientを介したREST):

// REST API — no official .NET SDK; integrate via HttpClient.
// Docs: https://pdfbolt.com/docs/quick-start-guide/csharp
using System;
using System.IO;
using System.Net.Http;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        var html = "<html><body><h1>Hello World</h1></body></html>";
        var payload = JsonSerializer.Serialize(new
        {
            html = Convert.ToBase64String(Encoding.UTF8.GetBytes(html))
        });

        using var http = new HttpClient();
        http.DefaultRequestHeaders.Add("API-KEY", "YOUR-PDFBOLT-API-KEY");
        using var content = new StringContent(payload, Encoding.UTF8, "application/json");
        using var response = await http.PostAsync("https://api.pdfbolt.com/v1/direct", content);
        response.EnsureSuccessStatusCode();

        var pdfBytes = await response.Content.ReadAsByteArrayAsync();
        await File.WriteAllBytesAsync("output.pdf", pdfBytes);
    }
}

翻訳後(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");
    }
}

構造的な違いは統合モデルです。 PDFBoltは、HTMLをbase64エンコードしてJSONペイロードを生成し、https://api.pdfbolt.com/v1/directに送り、レスポンスを待機し、返されたバイトを自分でディスクに書き込む必要があります。

IronPDFのSaveAs()メソッドを持っています。 オブジェクト指向モデルでは、保存前にPDFを操作する(透かしを追加、ドキュメントを統合、セキュリティを適用)ことができます。 既存のコードとの互換性のために生のバイトが必要な場合は、pdf.BinaryDataを使用してください。 その他のレンダリングオプションについては、HTML to PDF documentationを参照してください。

例2: URLからPDFへの変換

ビフォー(PDFBolt — HttpClientを介したREST):

// REST API — no official .NET SDK; integrate via HttpClient.
// Docs: https://pdfbolt.com/docs/quick-start-guide/csharp
using System.IO;
using System.Net.Http;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        var payload = JsonSerializer.Serialize(new { url = "https://www.example.com" });

        using var http = new HttpClient();
        http.DefaultRequestHeaders.Add("API-KEY", "YOUR-PDFBOLT-API-KEY");
        using var content = new StringContent(payload, Encoding.UTF8, "application/json");
        using var response = await http.PostAsync("https://api.pdfbolt.com/v1/direct", content);
        response.EnsureSuccessStatusCode();

        var pdfBytes = await response.Content.ReadAsByteArrayAsync();
        await File.WriteAllBytesAsync("webpage.pdf", pdfBytes);
    }
}

翻訳後(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");
    }
}

PDFBolt側では、URL変換は依然として完全なRESTラウンドトリップが必要です: JSON本文を構築し、APIキーのヘッダーを設定し、POSTを待ち、レスポンスバイトを書き込みます。 既に公開URLを指しているにもかかわらず、フェッチとレンダリングは両方ともPDFBoltのサーバーで行われます。

IronPDFのPdfDocumentを返します。 鍵となる利点は、IronPDFがURLのフェッチとPDFレンダリングをローカルで実行し、ドキュメントデータがあなたのインフラストラクチャを離れることがないことです。 URLからPDFへの変換の詳細については、こちらをご覧ください。

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

ビフォー(PDFBolt — HttpClientを介したREST):

// REST API — no official .NET SDK; integrate via HttpClient.
// Docs: https://pdfbolt.com/docs/parameters
using System;
using System.IO;
using System.Net.Http;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        var html = await File.ReadAllTextAsync("input.html");
        var payload = JsonSerializer.Serialize(new
        {
            html = Convert.ToBase64String(Encoding.UTF8.GetBytes(html)),
            format = "A4",
            margin = new { top = "20mm", bottom = "20mm" },
            printBackground = true
        });

        using var http = new HttpClient();
        http.DefaultRequestHeaders.Add("API-KEY", "YOUR-PDFBOLT-API-KEY");
        using var content = new StringContent(payload, Encoding.UTF8, "application/json");
        using var response = await http.PostAsync("https://api.pdfbolt.com/v1/direct", content);
        response.EnsureSuccessStatusCode();

        var pdfBytes = await response.Content.ReadAsByteArrayAsync();
        await File.WriteAllBytesAsync("output.pdf", pdfBytes);
    }
}

翻訳後(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");
    }
}

この例はページ設定マッピングを示しています。 PDFBoltは、CSS型の文字列(formatを受け入れます。 IronPDFは、厳密に型付けされたプロパティを持つレンダラー上のRenderingOptionsオブジェクトを使用します。

主なマッピング

  • "format": "A4"PdfPaperSize.A4 (厳密に型付けされた列挙型)
  • "margin": { "top": "20mm" }RenderingOptions.MarginTop = 20 (数値 mm)

IronPDFの余白は常に数値のミリメートルなので、PDFBoltのCSSユニット文字列"20mm"は直接マッピングされます。 PdfPaperSize列挙型へのアクセスに必要です。 さらにページ設定については、レンダリングオプションのドキュメントを参照してください。


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

返品タイプの変更

PDFBoltの/v1/directエンドポイントは、HTTPレスポンスボディとして生のPDFを返します。 IronPDFはPdfDocumentを返します:

//PDFBoltpattern:
var pdfBytes = await response.Content.ReadAsByteArrayAsync();
await File.WriteAllBytesAsync("output.pdf", pdfBytes);

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

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

統合モデルの変更

統合形がRESTクライアントからインプロセスライブラリに変わります:

// PDFBolt
using var http = new HttpClient();
http.DefaultRequestHeaders.Add("API-KEY", "YOUR-PDFBOLT-API-KEY");
// ... build JSON, POST to https://api.pdfbolt.com/v1/direct

// IronPDF
var renderer = new ChromePdfRenderer();

構成パターンの変更

PDFBoltの設定はリクエストボディのJSONフィールドです; IronPDFはRenderingOptionsを使用します:

// PDFBolt: JSON request fields
new { format = "A4", margin = new { top = "20mm" } }

// IronPDF: RenderingOptions properties
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 20;

APIキー消去

PDFBoltはすべてのリクエストにAPI-KEYヘッダーを必要としますが、IronPDFは一度のライセンスキーを使用します:

// PDFBolt: API key per HTTP call (security risk if leaked)
http.DefaultRequestHeaders.Add("API-KEY", config["PDFBolt: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

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

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");

トラブルシューティング

問題1: NuGet上のPDFBoltパッケージがない

問題: IronPDFでのusing PDFBolt; / new HtmlToPdfConverter()の探し方を探しています。

解決策: PDFBoltには.NET SDKがありません-その統合はHttpClientに対するものです。 IronPDFはそのラッパーを完全にChromePdfRendererで置き換えます:

// IronPDF
var renderer = new ChromePdfRenderer();

問題2: ConvertHtmlStringはどこに行ったのか?

問題: ConvertHtmlString(html)メソッドを公開していたインハウスのPDFBoltラッパーを移行中です。

解決策: RenderHtmlAsPdf()を使用してください:

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

問題3: ConvertUrlはどこに行ったのか?

問題: ConvertUrl(url)メソッドを公開していたインハウスのPDFBoltラッパーを移行中です。

解決策: RenderUrlAsPdf()を使用してください:

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

問題4: format JSONフィールド → 列挙型

問題: PDFBoltの"format": "A4" JSONフィールドの翻訳。

解決策: PdfPaperSizeを使用してください:

// 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>");

移行チェックリスト

移行前

  • コードベース内のすべてのPDFBolt REST呼び出しをインベントリ化 (api.pdfbolt.com)
  • 現在のJSONリクエストフィールドを文書化 (format, margin, printBackground, headerTemplate, etc.)
  • 削除するAPIキー管理コードを特定する
  • 削除する429 / クォータ再試行ハンドリングをリストします
  • IronPDFライセンスキーを取得する

パッケージの変更

  • 手作業で生成されたPDFBolt HttpClientラッパーとDTOsを削除 (アンインストールするNuGetパッケージなし)
  • dotnet add package IronPdfのNuGetパッケージをインストール
  • using IronPdf;名前空間を追加
  • 用紙サイズの列挙型のためusing IronPdf.Rendering;を追加

コードの変更

  • 起動時にライセンスキー設定を追加する
  • HttpClient + ChromePdfRendererに置き換え
  • RenderHtmlAsPdf() / RenderUrlAsPdf()で置き換え
  • await response.Content.ReadAsByteArrayAsync() + pdf.SaveAs()で置き換え (またはバイトがまだ必要な場合はpdf.BinaryData)
  • "format" / "margin" JSONフィールドをRenderingOptions.PaperSize / RenderingOptions.MarginTopなどにマッピング
  • APIキー管理コードを削除する
  • 429 / レート制限ハンドリングを削除
  • ネットワークエラー処理を削除

移行後

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

ご注意: PDFBoltはその所属する所有者の登録商標です。 このサイトはPDFBoltと提携しておらず、スポンサーや推奨もされていません。 すべての製品名、ロゴ、およびブランドは各所有者の所有物です。 比較は情報提供のみを目的としており、執筆時点で公開されている情報を反映しています。
Curtis Chau
テクニカルライター

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

...
詳しく読む

関連する記事

Key in blue circle

無料の30日間トライアルキーをすぐに入手してください。

Your trial license will be sent to your email address

制限なし。100% ロック解除済み。クレジットカード不要。

bullet_checkedクレジットカードやアカウントの作成は不要です。制限なし。100% ロック解除済み。クレジットカード不要。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
無料のライブデモを予約する
Booking Badge

世界中の数百万人のエンジニアから信頼されています。

ライセンスはより安く
義務のない相談を受ける
下記のフォームを記入するか、sales@ironsoftware.comにメールしてください。
あなたの詳細は常に守秘されます。
世界中の数百万人のエンジニアから信頼されています。
ライセンスはより安く
あなたの無料30日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。