フッターコンテンツにスキップ
ビデオ

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

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の比較

懸念事項 PDFBolt IronPDF
データロケーション 外部サーバー サーバーのみ
使用制限 毎月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
# 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";
// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
' Add at application startup (Program.vb or Startup.vb)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
$vbLabelText   $csharpLabel

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" .
# 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/direct renderer.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.WriteAllBytes pdf.SaveAs(path)
await response.Content.ReadAsByteArrayAsync() pdf.BinaryData

ページ構成マッピング

PDFBolt JSON IronPDF
"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);
    }
}
// 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);
    }
}
Imports System
Imports System.IO
Imports System.Net.Http
Imports System.Text
Imports System.Text.Json
Imports System.Threading.Tasks

Module Program
    Async Function Main() As Task
        Dim html As String = "<html><body><h1>Hello World</h1></body></html>"
        Dim payload As String = JsonSerializer.Serialize(New With {
            .html = Convert.ToBase64String(Encoding.UTF8.GetBytes(html))
        })

        Using http As New HttpClient()
            http.DefaultRequestHeaders.Add("API-KEY", "YOUR-PDFBOLT-API-KEY")
            Using content As New StringContent(payload, Encoding.UTF8, "application/json")
                Using response As HttpResponseMessage = Await http.PostAsync("https://api.pdfbolt.com/v1/direct", content)
                    response.EnsureSuccessStatusCode()

                    Dim pdfBytes As Byte() = Await response.Content.ReadAsByteArrayAsync()
                    Await File.WriteAllBytesAsync("output.pdf", pdfBytes)
                End Using
            End Using
        End Using
    End Function
End Module
$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");
    }
}
Imports IronPdf
Imports System.IO

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()
        Dim html = "<html><body><h1>Hello World</h1></body></html>"
        Dim pdf = renderer.RenderHtmlAsPdf(html)
        pdf.SaveAs("output.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

構造的な違いは統合モデルです。 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);
    }
}
// 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);
    }
}
Imports System.IO
Imports System.Net.Http
Imports System.Text
Imports System.Text.Json
Imports System.Threading.Tasks

Module Program
    Async Function Main() As Task
        Dim payload = JsonSerializer.Serialize(New With {.url = "https://www.example.com"})

        Using http As New HttpClient()
            http.DefaultRequestHeaders.Add("API-KEY", "YOUR-PDFBOLT-API-KEY")
            Using content As New StringContent(payload, Encoding.UTF8, "application/json")
                Using response As HttpResponseMessage = Await http.PostAsync("https://api.pdfbolt.com/v1/direct", content)
                    response.EnsureSuccessStatusCode()

                    Dim pdfBytes As Byte() = Await response.Content.ReadAsByteArrayAsync()
                    Await File.WriteAllBytesAsync("webpage.pdf", pdfBytes)
                End Using
            End Using
        End Using
    End Function
End Module
$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");
    }
}
Imports IronPdf

Class Program
    Shared Sub Main()
        Dim renderer As New ChromePdfRenderer()
        Dim pdf = renderer.RenderUrlAsPdf("https://www.example.com")
        pdf.SaveAs("webpage.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

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);
    }
}
// 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);
    }
}
Imports System
Imports System.IO
Imports System.Net.Http
Imports System.Text
Imports System.Text.Json
Imports System.Threading.Tasks

Module Program
    Async Function Main() As Task
        Dim html = Await File.ReadAllTextAsync("input.html")
        Dim payload = JsonSerializer.Serialize(New With {
            .html = Convert.ToBase64String(Encoding.UTF8.GetBytes(html)),
            .format = "A4",
            .margin = New With {.top = "20mm", .bottom = "20mm"},
            .printBackground = True
        })

        Using http As New HttpClient()
            http.DefaultRequestHeaders.Add("API-KEY", "YOUR-PDFBOLT-API-KEY")
            Using content As New StringContent(payload, Encoding.UTF8, "application/json")
                Using response As HttpResponseMessage = Await http.PostAsync("https://api.pdfbolt.com/v1/direct", content)
                    response.EnsureSuccessStatusCode()

                    Dim pdfBytes = Await response.Content.ReadAsByteArrayAsync()
                    Await File.WriteAllBytesAsync("output.pdf", pdfBytes)
                End Using
            End Using
        End Using
    End Function
End Module
$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");
    }
}
Imports IronPdf
Imports IronPdf.Rendering
Imports System.IO

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()
        renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
        renderer.RenderingOptions.MarginTop = 20
        renderer.RenderingOptions.MarginBottom = 20
        Dim html = File.ReadAllText("input.html")
        Dim pdf = renderer.RenderHtmlAsPdf(html)
        pdf.SaveAs("output.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

この例はページ設定マッピングを示しています。 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;
//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;
Imports System.IO

'PDFBoltpattern:
Dim pdfBytes = Await response.Content.ReadAsByteArrayAsync()
Await File.WriteAllBytesAsync("output.pdf", pdfBytes)

'IronPDFpattern:
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")

' Or if you need bytes:
Dim pdfBytes As Byte() = renderer.RenderHtmlAsPdf(html).BinaryData
$vbLabelText   $csharpLabel

統合モデルの変更

統合形が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
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();
Imports System.Net.Http

' PDFBolt
Using http As New HttpClient()
    http.DefaultRequestHeaders.Add("API-KEY", "YOUR-PDFBOLT-API-KEY")
    ' ... build JSON, POST to https://api.pdfbolt.com/v1/direct
End Using

' IronPDF
Dim renderer As New ChromePdfRenderer()
$vbLabelText   $csharpLabel

構成パターンの変更

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;
// PDFBolt: JSON request fields
new { format = "A4", margin = new { top = "20mm" } }

// IronPDF: RenderingOptions properties
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 20;
' PDFBolt: JSON request fields
New With {Key .format = "A4", Key .margin = New With {Key .top = "20mm"}}

' IronPDF: RenderingOptions properties
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.MarginTop = 20
$vbLabelText   $csharpLabel

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: 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: 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"
Dim renderer As 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");
' PDF Merging (not available in PDFBolt)
Dim 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)
Dim text As String = pdf.ExtractAllText()

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

トラブルシューティング

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

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

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

// IronPDF
var renderer = new ChromePdfRenderer();
// IronPDF
var renderer = new ChromePdfRenderer();
' IronPDF
Dim renderer As New ChromePdfRenderer()
$vbLabelText   $csharpLabel

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

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

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

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

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

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

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

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

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

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

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

// IronPDF
using IronPdf.Rendering;
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
// IronPDF
using IronPdf.Rendering;
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
Imports 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>");
' Warm up during application startup
Dim renderer As New ChromePdfRenderer()
renderer.RenderHtmlAsPdf("<html><body></body></html>")
$vbLabelText   $csharpLabel

移行チェックリスト

移行前

  • コードベース内のすべての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は現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

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

アイアンサポートチーム

私たちは週5日、24時間オンラインで対応しています。
チャット
メール
電話してね