MIGRATION GUIDES How to Migrate from PDFBolt to IronPDF in C# Curtis Chau 發表日期:2026年1月25日 下載 IronPDF NuGet 下載 DLL 下載 Windows 安裝程式 開始免費試用 法學碩士副本 法學碩士副本 將頁面複製為 Markdown 格式,用於 LLMs 在 ChatGPT 中打開 請向 ChatGPT 諮詢此頁面 在雙子座打開 請向 Gemini 詢問此頁面 在 Grok 中打開 向 Grok 詢問此頁面 打開困惑 向 Perplexity 詢問有關此頁面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 複製連結 電子郵件文章 從 PDFBolt 遷移到 IronPDF,會將您的 .NET PDF 工作流程從僅限雲端的 SaaS 服務(具有外部文件處理)遷移到具有完全資料隱私和無限本地生成的自託管庫。 本指南提供了一個全面的、逐步的遷移路徑,消除了網路依賴性、使用限制和外部資料傳輸,同時獲得了 PDFBolt 無法提供的 PDF 操作功能。 為什麼要從 PDFBolt 遷移到 IronPDF 純雲端問題 PDFBolt 是一個純雲端 SaaS 平台,它在外部伺服器上處理您的文件。 雖然這種架構便於快速建立原型,但它為生產應用帶來了重大挑戰: 1.僅雲端處理:每個文件都透過外部伺服器處理-沒有自架選項,這可能會阻礙那些需要更多控制其資料和流程的企業。 2.資料隱私風險:敏感文件(合約、醫療記錄、財務資料)必須向外傳輸。 處理敏感資訊的公司會有合理的擔憂。 3.使用限制:免費套餐每月最多只能處理 100 個文檔,這對於規模較大的企業來說可能不夠用。 按文檔付費的定價模式對於生產工作負載來說成本會迅速累積。 4.網路依賴:網路中斷或 PDFBolt 服務中斷意味著 PDF 產生將完全停止。 5.延遲:與本地處理相比,網路往返會使每次轉換增加幾秒鐘。 6.合規性問題: GDPR、HIPAA 和 SOC2 審計因外部文件處理而變得複雜。 API 金鑰安全:洩漏的 API 金鑰可能導致未經授權的使用,並被計入您的帳戶。 8.供應商鎖定:如果 PDFBolt 更改條款或關閉,您的應用程式將無法運作。 PDFBolt 與 IronPDF 對比 憂慮 PDFBolt IronPDF 數據位置 外部伺服器 您的伺服器僅 使用限制 前100個免費,之後按文件收費 無限 需要網路連線 是的,一直都是如此。 不 延遲 網路往返 毫秒 遵守 複雜(外部處理) 簡單(本地處理) 成本模型 每個文檔 一次性或年度 離線操作 不可能的 完全支持 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 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 all PDFBolt references grep -r "PDFBolt\|HtmlToPdfConverter\|ConvertHtmlString\|ConvertUrl" --include="*.cs" . # Find API key references grep -r "PDFBOLT\|ApiKey" --include="*.cs" --include="*.json" --include="*.config" . # Find all PDFBolt references grep -r "PDFBolt\|HtmlToPdfConverter\|ConvertHtmlString\|ConvertUrl" --include="*.cs" . # Find API key references grep -r "PDFBOLT\|ApiKey" --include="*.cs" --include="*.json" --include="*.config" . SHELL 完整 API 參考 核心類別映射 PDFBolt IronPDF 筆記 new HtmlToPdfConverter() new ChromePdfRenderer() 主渲染器 PageSize PdfPaperSize 紙張尺寸枚舉 (返回位元組數組) PdfDocument 富文檔對象 轉換方法映射 PDFBolt IronPDF 筆記 converter.ConvertHtmlString(html) renderer.RenderHtmlAsPdf(html) 返回 PDF 文檔 converter.ConvertUrl(url) renderer.RenderUrlAsPdf(url) 返回 PDF 文檔 輸出方法映射 PDFBolt IronPDF 筆記 File.WriteAllBytes(path, pdf) pdf.SaveAs(path) 直接保存方法 (pdf 是位元組數組) 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} 目前頁面 {totalPages} {total-pages} 總頁數 {date} {date} 相同的 {title} {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); } } $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 轉 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); } } $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 PDFBolt 的 URL 轉換模式與 HTML 轉換遵循相同的方法: ConvertUrl()傳回byte[] ,需要使用File.WriteAllBytes()進行儲存。 請注意,即使您已經透過 URL 取得數據,PDFBolt 仍然需要與其伺服器進行網路往返。 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.A4 → PdfPaperSize.A4 (枚舉名稱不同) MarginTop = 20 → RenderingOptions.MarginTop = 20 (透過 RenderingOptions) 兩者都使用毫米作為邊距單位,因此您現有的邊距值應該可以直接轉移。 訪問PdfPaperSize枚舉需要IronPdf.Rendering命名空間。 有關其他頁面配置選項,請參閱渲染選項文件。 關鍵遷移說明 返回類型變更 PDFBolt 直接回到byte[] ; IronPDF 返回PdfDocument : // PDFBolt pattern: byte[] pdf = converter.ConvertHtmlString(html); File.WriteAllBytes("output.pdf", pdf); // IronPDF pattern: var pdf = renderer.RenderHtmlAsPdf(html); pdf.SaveAs("output.pdf"); // Or if you need bytes: byte[] pdfBytes = renderer.RenderHtmlAsPdf(html).BinaryData; // PDFBolt pattern: byte[] pdf = converter.ConvertHtmlString(html); File.WriteAllBytes("output.pdf", pdf); // IronPDF pattern: 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 使用一次許可證金鑰: // 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 列舉 問題: 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; $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() 將PageSize更新為RenderingOptions.PaperSize 將邊距屬性更新為RenderingOptions.MarginTop等。 移除 API 金鑰管理程式碼 移除速率限制處理程式碼 移除網路錯誤處理 移民後 從設定檔中刪除 API 金鑰 從金鑰管理員移除 API 金鑰 執行所有測試,比較 PDF 輸出 驗證頁面尺寸和邊距是否正確顯示。 考慮新增功能(浮水印、安全、合併) Curtis Chau 立即與工程團隊聊天 技術撰稿人 Curtis Chau 擁有電腦科學學士學位(卡爾頓大學),專長於前端開發,精通 Node.js、TypeScript、JavaScript 和 React。Curtis 對製作直覺且美觀的使用者介面充滿熱情,他喜歡使用現代化的架構,並製作結構良好且視覺上吸引人的手冊。除了開發之外,Curtis 對物聯網 (IoT) 也有濃厚的興趣,他喜歡探索整合硬體與軟體的創新方式。在空閒時間,他喜歡玩遊戲和建立 Discord bots,將他對技術的熱愛與創意結合。 相關文章 發表日期 2026年2月1日 How to Migrate from ZetPDF to IronPDF in C# Master the migration from ZetPDF to IronPDF with this complete C# guide. Switch from a coordinate-based library to a modern HTML-to-PDF solution. Includes code examples for HTML conversion, merging PDFs, and removing PDFSharp dependencies. 閱讀更多 發表日期 2026年2月1日 How to Migrate from Scryber.Core to IronPDF in C# Master the migration from Scryber.Core to IronPDF with this complete C# guide. Switch from custom XML/HTML parsing to a modern Chromium renderer. Includes code examples for HTML conversion, URL rendering, and replacing proprietary bindings. 閱讀更多 發表日期 2026年2月1日 How to Migrate from XFINIUM.PDF to IronPDF in C# Master the migration from XFINIUM.PDF to IronPDF with this complete C# guide. Switch from manual coordinate-based positioning to declarative HTML/CSS rendering. Includes code examples for replacing graphics primitives and automatic layout. 閱讀更多 How to Migrate from PDF Duo to IronPDF in C#How to Migrate from Nutrient.io to ...
發表日期 2026年2月1日 How to Migrate from ZetPDF to IronPDF in C# Master the migration from ZetPDF to IronPDF with this complete C# guide. Switch from a coordinate-based library to a modern HTML-to-PDF solution. Includes code examples for HTML conversion, merging PDFs, and removing PDFSharp dependencies. 閱讀更多
發表日期 2026年2月1日 How to Migrate from Scryber.Core to IronPDF in C# Master the migration from Scryber.Core to IronPDF with this complete C# guide. Switch from custom XML/HTML parsing to a modern Chromium renderer. Includes code examples for HTML conversion, URL rendering, and replacing proprietary bindings. 閱讀更多
發表日期 2026年2月1日 How to Migrate from XFINIUM.PDF to IronPDF in C# Master the migration from XFINIUM.PDF to IronPDF with this complete C# guide. Switch from manual coordinate-based positioning to declarative HTML/CSS rendering. Includes code examples for replacing graphics primitives and automatic layout. 閱讀更多