如何在 C# 中從 PDFBolt 轉移到 IronPDF
從PDFBolt轉移到 IronPDF:完整的 C# 遷移指南。
從PDFBolt遷移到 IronPDF,可將您的 .NET PDF 工作流程從具有外部文件處理功能的僅雲端 SaaS 服務轉換為具有完整資料隱私和無限制本地生成功能的自託管庫。 本指南提供全面、逐步的遷移路徑,可消除網路依賴、使用限制和外部資料傳輸,同時獲得PDFBolt無法提供的 PDF 操作功能。
為什麼要從PDFBolt轉移到 IronPDF?
僅限雲端問題
PDFBolt 是雲端 SaaS 平台,可在外部伺服器上處理您的文件。 雖然對快速原型來說很方便,但這種架構對生產應用程式造成很大的挑戰:
1.Cloud-Only Processing:每個文件都會經過外部伺服器,因此沒有自我託管的選項,這可能會阻礙需要對其資料和流程進行更多控制的企業。
2.資料隱私風險:敏感性文件(合約、醫療記錄、財務資料)必須對外傳輸。 處理敏感資訊的公司會有合理的顧慮。
3.使用限制:免費層級的上限為每月 100 個文件,對於較大型的企業來說可能不太足夠。 按文件付費的價格對於生產工作量來說增加得很快。
4.網路依賴性:網路中斷或PDFBolt停機意味著您的 PDF 生成完全停止。
5.延遲:與本機處理相比,每次轉換的網路往返時間都會增加幾秒鐘。
6.合規問題:GDPR、HIPAA 和 SOC2 審計因外部文件處理而變得複雜。
7.API 金鑰安全性:洩漏 API 金鑰可能會導致未經授權的使用,並將費用記入您的帳戶。
8.Vendor Lock-in: 如果PDFBolt變更條款或關閉,您的應用程式就會失敗。
PDFBolt與IronPDF比較
| 關注事項 | PDFBolt | IronPDF |
|---|---|---|
| 資料位置 | 外部伺服器 | 僅限您的伺服器 |
| 使用限制 | 100 免費,然後按文件收費 | 無限制 |
| 需要互聯網 | 是的,總是 | 無 |
| 交稿時間 | 網路往返 | 毫秒 |
| 合規性 | 複雜(外部處理) | 簡單(本地處理) |
| 成本模式 | 每個文件 | 一次性或年度 |
| 離線操作 | 不可能 | 完全支援 |
| 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授權組態
// 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";IRON VB CONVERTER ERROR developers@ironsoftware.com辨識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 | 筆記 |
|---|---|---|
新的 HtmlToPdfConverter() | 新的 ChromePdfRenderer() | 主要呈現器 |
頁面大小 | <編碼>PdfPaperSize</編碼 | 紙張尺寸枚舉 |
| (返回 byte[]) | <編碼>PDF 文件</編碼 | 豐富的文件物件 |
轉換方法對應
| PDFBolt | IronPDF | 筆記 |
|---|---|---|
converter.ConvertHtmlString(html) | renderer.RenderHtmlAsPdf(html)。 | 返回 PdfDocument |
converter.ConvertUrl(url)。 | renderer.RenderUrlAsPdf(url)。 | 返回 PdfDocument |
輸出方法對應
| PDFBolt | IronPDF | 筆記 |
|---|---|---|
File.WriteAllBytes(path, pdf) | <代碼>pdf.SaveAs(路徑)</代碼 | 直接儲存方法 |
| (pdf is byte[]) | <編碼>pdf.BinaryData</編碼 | 取得位元組 |
| (手動串流) | <代碼>pdf.Stream</代碼 | 流特性 |
頁面組態對應
| PDFBolt | IronPDF | 筆記 |
|---|---|---|
converter.PageSize = PageSize.A4 | renderer.RenderingOptions.PaperSize=PdfPaperSize.A4。 | 紙張尺寸枚舉 |
converter.MarginTop = 20 | renderer.RenderingOptions.MarginTop = 20。 | 以毫米為單位 |
converter.MarginBottom = 20 | renderer.RenderingOptions.MarginBottom = 20。 | 以毫米為單位 |
converter.MarginLeft = 15 | renderer.RenderingOptions.MarginLeft = 15。 | 以毫米為單位 |
converter.MarginRight = 15 | renderer.RenderingOptions.MarginRight = 15。 | 以毫米為單位 |
頁首/頁尾占位符對應
| PDFBolt | IronPDF | 筆記 |
|---|---|---|
| <編碼>{pageNumber}</編碼 | {page} | 目前頁面 |
| <編碼>{總頁數}</編碼 | {總頁數} | 總頁數 |
| <編碼>{日期}</編碼 | <編碼>{日期}</編碼 | 內容相同 |
| <編碼>{標題}</編碼 | <編碼>{html-title}</編碼 | 文件標題 |
程式碼遷移範例
範例 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);
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comAfter (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");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.com這裡的基本差異是回傳類型和儲存模式。PDFBolt的 HtmlToPdfConverter.ConvertHtmlString() 返回一個 byte[] ,您必須使用 File.WriteAllBytes() 手動寫入磁碟。 這需要匯入 System.IO 並自行處理檔案作業。
IronPDF 的 ChromePdfRenderer.RenderHtmlAsPdf() 返回一個<編碼>PDF 文件</編碼物件,並內建 SaveAs() 方法。 這種物件導向的方法提供了額外的好處:您可以在儲存之前對 PDF 進行操作(新增水印、合併文件、新增安全性)。 如果您需要原始位元組以與現有程式碼相容,請使用<編碼>pdf.BinaryData</編碼。 請參閱 HTML to PDF 文件,以瞭解其他渲染選項。
範例 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);
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comAfter (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");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comPDFBolt 的 URL 轉換模式遵循與 HTML 轉換相同的方法:ConvertUrl() 會回傳 byte[] ,需要 File.WriteAllBytes() 來儲存。 請注意,儘管您已經從 URL 抓取,PDFBolt 仍然需要透過網路往返其伺服器。
IronPDF 的 RenderUrlAsPdf() 方法返回一個內建 SaveAs() 方法的<編碼>PDF 文件</編碼。 這方面的主要優勢在於IronPDF在本機執行 URL 抓取和 PDF 渲染 - 資料不會離開您的基礎架構。 請注意,IronPDF 版本甚至不需要 使用 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);
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comAfter (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");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.com本範例展示頁面配置差異。PDFBolt直接在轉換器物件上設定屬性 (converter.PageSize、converter.MarginTop)。IronPDF在渲染器上使用 RenderingOptions 物件(renderer.RenderingOptions.PaperSize、renderer.RenderingOptions.MarginTop)。
關鍵對應:
PageSize.A4→PdfPaperSize.A4(不同的枚舉名稱)MarginTop = 20→RenderingOptions.MarginTop = 20(via RenderingOptions)
兩者都使用毫米作為邊界值,因此您現有的邊界值應可直接轉換。 要存取<編碼>PdfPaperSize</編碼枚舉,必須使用 IronPDF.Rendering 命名空間。 如需其他頁面設定選項,請參閱 渲染選項說明文件。
關鍵遷移注意事項
返回類型變更
PDFBolt 直接回傳 byte[] ;IronPDF返回<編碼>PDF 文件</編碼:
//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;IRON VB CONVERTER ERROR developers@ironsoftware.com類別命名變更
主類別名稱從以轉換器為主變為以呈現器為主:
// PDFBolt
var converter = new HtmlToPdfConverter();
// IronPDF
var renderer = new ChromePdfRenderer();// PDFBolt
var converter = new HtmlToPdfConverter();
// IronPDF
var renderer = new ChromePdfRenderer();IRON VB CONVERTER ERROR developers@ironsoftware.com設定模式變更
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;IRON VB CONVERTER ERROR developers@ironsoftware.comAPI 關鍵詞消除
PDFBolt 需要按要求進行 API 金鑰管理; IronPdf 使用一次性授權金鑰:
// 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();IRON VB CONVERTER ERROR developers@ironsoftware.com移除網路錯誤處理
本地處理意味著不需要處理網路錯誤:
// 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 entirelyIRON VB CONVERTER ERROR developers@ironsoftware.com可用的新功能
轉移到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");IRON VB CONVERTER ERROR developers@ironsoftware.com疑難排解
問題 1:HtmlToPdfConverter 未找到
問題:HtmlToPdfConverter class 在IronPDF中不存在。
解決方案:使用ChromePdfRenderer:
// PDFBolt
var converter = new HtmlToPdfConverter();
// IronPDF
var renderer = new ChromePdfRenderer();// PDFBolt
var converter = new HtmlToPdfConverter();
// IronPDF
var renderer = new ChromePdfRenderer();IRON VB CONVERTER ERROR developers@ironsoftware.com問題 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);IRON VB CONVERTER ERROR developers@ironsoftware.com問題 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);IRON VB CONVERTER ERROR developers@ironsoftware.com問題 4:未找到 PageSize 枚數
問題: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;IRON VB CONVERTER ERROR developers@ironsoftware.com問題 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>");IRON VB CONVERTER ERROR developers@ironsoftware.com遷移清單
預遷移
- [清查程式碼庫中所有PDFBolt的使用情況
- [ ] 文件當前頁面配置設置(PageSize、邊界)
- [ ] 識別要移除的 API 金鑰管理程式碼
- [ ] 列出要刪除的任何速率限制或網路錯誤處理
- [ ] 獲得 IronPdf 授權金鑰
套件變更
- [ ] 移除
PDFBoltNuGet 套件 - [ ] 安裝
IronPDFNuGet 套件:dotnet add package IronPdf。 - [ ] 新增
使用 IronPdf;命名空間 - [ ] 新增
使用 IronPdf.Rendering;的紙張大小枚舉
程式碼變更
- [ ] 在啟動時加入授權金鑰組態
- [ ] 將
HtmlToPdfConverter替換為ChromePdfRenderer - [ ] 將
ConvertHtmlString()替換為RenderHtmlAsPdf()。 - [將
ConvertUrl()替換為RenderUrlAsPdf()。 - [ ] 將
File.WriteAllBytes()替換為pdf.SaveAs()。 - [更新
頁面大小為RenderingOptions.PaperSize - [ ] 更新 margin 屬性為
RenderingOptions.MarginTop等。 - [ ] 移除 API 金鑰管理程式碼
- [ ] 移除費率限制處理程式碼
- [ ] 移除網路錯誤處理
後遷移
- [從組態檔案中刪除 API 金鑰
- [ ] 從秘密管理員中移除 API 金鑰
- [ ] 執行所有比較 PDF 輸出的測試
- [ ] 確認頁面大小和頁邊空白的呈現是否正確
- [ ] 考慮增加新功能(水印、安全性、合併)
結論
從PDFBolt轉移到IronPDF將您的 PDF 生成從外部雲端服務轉移到本機處理,消除了資料隱私問題、使用限制和網路依賴性。 遷移以無限制的本地產生取代按文件付費的模式,同時增加PDFBolt無法提供的 PDF 操作功能。
本次轉換的主要變更如下 1.資料位置:外部伺服器 → 僅限您的伺服器 2.用途:每個文件限制 → 無限制 3.類別:HtmlToPdfConverter → ChromePdfRenderer. 4.方法:ConvertHtmlString()/ConvertUrl() → RenderHtmlAsPdf()/RenderUrlAsPdf() 5.輸出:byte[] + File.WriteAllBytes() → PdfDocument.SaveAs() 6.配置:直接屬性 → RenderingOptions 屬性 7.驗證:每次請求的 API 金鑰 → 啟動時一次的授權金鑰






