MIGRATION GUIDES How to Migrate from EO.Pdf to IronPDF in C# Curtis Chau 發表日期:2026年1月11日 下載 IronPDF NuGet 下載 DLL 下載 Windows 安裝程式 開始免費試用 法學碩士副本 法學碩士副本 將頁面複製為 Markdown 格式,用於 LLMs 在 ChatGPT 中打開 請向 ChatGPT 諮詢此頁面 在雙子座打開 請向 Gemini 詢問此頁面 在 Grok 中打開 向 Grok 詢問此頁面 打開困惑 向 Perplexity 詢問有關此頁面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 複製連結 電子郵件文章 EO.Pdf 提出了幾個架構方面的挑戰,促使開發團隊評估各種替代方案。 了解這些問題對於制定遷移策略至關重要。 EO.Pdf 問題 126MB 的龐大軟體包大小: EO.Pdf 捆綁了自己的 Chromium 引擎,導致部署佔用空間達到 126MB。 這會導致 Docker 映像體積膨脹,降低 CI/CD 管線速度,並增加基礎設施成本。 2.遺留架構包袱: EO.Pdf 最初是基於 Internet Explorer 的渲染引擎構建的,之後遷移到了 Chromium。 這種遺留問題導致了 IE 時代的兼容性問題、API 設計中的技術債以及版本之間的不一致行為。 3.以 Windows 為中心的設計:儘管 EO.Pdf 被宣傳為"跨平台",但其對 Linux 和 macOS 的支援卻很有限。 許多開發者反映在非 Windows 部署環境中存在問題。 4.靜態全域選項: EO.Pdf 使用靜態HtmlToPdf.Options進行配置,並非執行緒安全,在多租戶 Web 應用程式中存在問題。 5.每許可證 799 美元: EO.Pdf 的開發者許可證價格為 799 美元,與其他提供類似或更好功能的替代方案相比,價格昂貴。 架構比較 方面 EO.Pdf IronPDF 包裝尺寸 126MB 優化後(約50MB) 遺留問題 IE移民行李 簡潔、現代的程式碼庫 平台支援 以 Windows 為中心的 真正的跨平台 配置 靜態/全域(非線程安全) 基於實例,線程安全 API設計 混合(HtmlToPdf + ACM) 統一、一致 文件 有限的 綜合教程 近代 .NET .NET 標準 .NET 6/7/8/9+ 原生 非同步支援 有限的 完全異步/等待 遷移的主要優勢 1.佔用空間減少 50%: IronPDF 優化的 Chromium 封裝 2.真正的跨平台:在 Windows、Linux、macOS 和 Docker 上都能完美運作 3.執行緒安全配置:基於實例的渲染器選項 4.現代 API:一致且直覺的方法名稱 5.更完善的文件:豐富的教學與範例 遷移前準備 先決條件 請確保您的環境符合以下要求: .NET Framework 4.6.2+ 或 .NET Core 3.1 / .NET 5-9 Visual Studio 2019+ 或帶有 C# 擴充功能的 VS Code NuGet 套件管理器訪問 IronPDF 許可證金鑰(可在ironpdf.com提供免費試用) 審計 EO.Pdf 使用情況 在解決方案目錄中執行以下命令,以識別所有 EO.Pdf 引用: # Find all EO.Pdf references grep -r "EO.Pdf\|HtmlToPdf\|AcmRender\|PdfDocument" --include="*.cs" . # Check NuGet packages dotnet list package | grep -i "EO.Pdf" # Find all EO.Pdf references grep -r "EO.Pdf\|HtmlToPdf\|AcmRender\|PdfDocument" --include="*.cs" . # Check NuGet packages dotnet list package | grep -i "EO.Pdf" SHELL 常見的 EO.Pdf 命名空間: EO.Pdf - 核心 HTML 轉 PDF EO.Pdf.Acm - 高級內容模型 (ACM) EO.Pdf.Contents - 低階內容操縱 EO.Pdf.Drawing - 圖形操作 理解核心模式變化 EO.Pdf 和 IronPDF 之間最顯著的架構差異在於配置範圍。 EO.Pdf 使用具有全域選項的靜態方法,這些選項會影響所有轉換—這種模式會導致 Web 應用程式出現執行緒安全性問題。 IronPDF 使用基於實例的渲染器和本機選項,確保每次轉換都是隔離的。 逐步遷移過程 步驟 1:更新 NuGet 套件 刪除 EO.Pdf 並安裝 IronPDF: # Remove EO.Pdf dotnet remove package EO.Pdf # Install IronPDF dotnet add package IronPdf # Remove EO.Pdf dotnet remove package EO.Pdf # Install IronPDF dotnet add package IronPdf SHELL 步驟 2:更新命名空間引用 將 EO.Pdf 命名空間替換為 IronPDF: // Remove these using EO.Pdf; using EO.Pdf.Acm; // Add this using IronPdf; // Remove these using EO.Pdf; using EO.Pdf.Acm; // Add this using IronPdf; $vbLabelText $csharpLabel 步驟 3:設定許可證 // 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 完整的 API 遷移參考 核心類別映射 EO.Pdf 類 IronPDF當量 筆記 HtmlToPdf ChromePdfRenderer 基於實例 PdfDocument PdfDocument 相似但不同的方法 HtmlToPdfOptions ChromePdfRenderOptions 透過RenderingOptions AcmRender 不需要 改用 HTML/CSS AcmText HTML<span> ,<p> AcmBlock HTML<div> 方法映射 EO.Pdf 方法 IronPDF 方法 筆記 HtmlToPdf.ConvertHtml(html, path) renderer.RenderHtmlAsPdf(html)然後SaveAs(path) IronPDF 中的兩步驟法 HtmlToPdf.ConvertUrl(url, path) renderer.RenderUrlAsPdf(url)然後SaveAs(path) PdfDocument.Save(path) pdf.SaveAs(path) new PdfDocument(path) PdfDocument.FromFile(path) 靜態工廠 doc.Append(other) PdfDocument.Merge(doc1, doc2) 靜態合併方法 選項映射 EO.Pdf選項 IronPDF渲染選項 筆記 Options.PageSize = PdfPageSizes.A4 PaperSize = PdfPaperSize.A4 Options.OutputArea (RectangleF) MarginTop 、 MarginBottom等。 單一屬性(毫米) 程式碼遷移範例 HTML 轉 PDF HTML 到 PDF 的基本轉換反映了從靜態方法到基於實例的渲染的轉變。 EO.Pdf實施: // NuGet: Install-Package EO.Pdf using EO.Pdf; using System; class Program { static void Main() { string html = "<html><body><h1>Hello World</h1><p>This is a PDF generated from HTML.</p></body></html>"; HtmlToPdf.ConvertHtml(html, "output.pdf"); Console.WriteLine("PDF created successfully!"); } } // NuGet: Install-Package EO.Pdf using EO.Pdf; using System; class Program { static void Main() { string html = "<html><body><h1>Hello World</h1><p>This is a PDF generated from HTML.</p></body></html>"; HtmlToPdf.ConvertHtml(html, "output.pdf"); Console.WriteLine("PDF created successfully!"); } } $vbLabelText $csharpLabel IronPDF實現: // NuGet: Install-Package IronPdf using IronPdf; using System; class Program { static void Main() { string html = "<html><body><h1>Hello World</h1><p>This is a PDF generated from HTML.</p></body></html>"; var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf(html); pdf.SaveAs("output.pdf"); Console.WriteLine("PDF created successfully!"); } } // NuGet: Install-Package IronPdf using IronPdf; using System; class Program { static void Main() { string html = "<html><body><h1>Hello World</h1><p>This is a PDF generated from HTML.</p></body></html>"; var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf(html); pdf.SaveAs("output.pdf"); Console.WriteLine("PDF created successfully!"); } } $vbLabelText $csharpLabel IronPDF 的兩步驟模式(先渲染,再儲存)允許在儲存之前存取PdfDocument物件以進行額外的操作。 更多選項,請參閱HTML 轉 PDF 文件。 URL 轉 PDF EO.Pdf實施: // NuGet: Install-Package EO.Pdf using EO.Pdf; using System; class Program { static void Main() { string url = "https://www.example.com"; HtmlToPdf.ConvertUrl(url, "webpage.pdf"); Console.WriteLine("PDF from URL created successfully!"); } } // NuGet: Install-Package EO.Pdf using EO.Pdf; using System; class Program { static void Main() { string url = "https://www.example.com"; HtmlToPdf.ConvertUrl(url, "webpage.pdf"); Console.WriteLine("PDF from URL created successfully!"); } } $vbLabelText $csharpLabel IronPDF實現: // NuGet: Install-Package IronPdf using IronPdf; using System; class Program { static void Main() { string url = "https://www.example.com"; var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderUrlAsPdf(url); pdf.SaveAs("webpage.pdf"); Console.WriteLine("PDF from URL created successfully!"); } } // NuGet: Install-Package IronPdf using IronPdf; using System; class Program { static void Main() { string url = "https://www.example.com"; var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderUrlAsPdf(url); pdf.SaveAs("webpage.pdf"); Console.WriteLine("PDF from URL created successfully!"); } } $vbLabelText $csharpLabel IronPDF 的RenderUrlAsPdf提供完整的 JavaScript 執行和現代 CSS 支援。 更多選項請參閱PDF 文件的 URL 。 帶有自訂設定的 HTML 文件 此範例展示了配置模式的關鍵差異—EO.Pdf 的OutputArea以英吋為單位,而 IronPDF 的各個邊距屬性以毫米為單位。 EO.Pdf實施: // NuGet: Install-Package EO.Pdf using EO.Pdf; using System; class Program { static void Main() { HtmlToPdfOptions options = new HtmlToPdfOptions(); options.PageSize = PdfPageSizes.A4; options.OutputArea = new RectangleF(0.5f, 0.5f, 7.5f, 10.5f); HtmlToPdf.ConvertUrl("file:///C:/input.html", "output.pdf", options); Console.WriteLine("PDF with custom settings created."); } } // NuGet: Install-Package EO.Pdf using EO.Pdf; using System; class Program { static void Main() { HtmlToPdfOptions options = new HtmlToPdfOptions(); options.PageSize = PdfPageSizes.A4; options.OutputArea = new RectangleF(0.5f, 0.5f, 7.5f, 10.5f); HtmlToPdf.ConvertUrl("file:///C:/input.html", "output.pdf", options); Console.WriteLine("PDF with custom settings created."); } } $vbLabelText $csharpLabel IronPDF實現: // NuGet: Install-Package IronPdf using IronPdf; using IronPdf.Rendering; using System; class Program { static void Main() { var renderer = new ChromePdfRenderer(); renderer.RenderingOptions.PaperSize = PdfPaperSize.A4; renderer.RenderingOptions.MarginTop = 20; renderer.RenderingOptions.MarginBottom = 20; renderer.RenderingOptions.MarginLeft = 20; renderer.RenderingOptions.MarginRight = 20; var pdf = renderer.RenderHtmlFileAsPdf("C:/input.html"); pdf.SaveAs("output.pdf"); Console.WriteLine("PDF with custom settings created."); } } // NuGet: Install-Package IronPdf using IronPdf; using IronPdf.Rendering; using System; class Program { static void Main() { var renderer = new ChromePdfRenderer(); renderer.RenderingOptions.PaperSize = PdfPaperSize.A4; renderer.RenderingOptions.MarginTop = 20; renderer.RenderingOptions.MarginBottom = 20; renderer.RenderingOptions.MarginLeft = 20; renderer.RenderingOptions.MarginRight = 20; var pdf = renderer.RenderHtmlFileAsPdf("C:/input.html"); pdf.SaveAs("output.pdf"); Console.WriteLine("PDF with custom settings created."); } } $vbLabelText $csharpLabel 請注意單位轉換:EO.Pdf 在OutputArea中使用英寸,而 IronPDF 使用毫米。 換算方法: inches × 25.4 = mm 。 更多選項請參閱渲染選項文件。 合併多個PDF文件 PDF 合併示範了 EO.Pdf 的Append循環模式與 IronPDF 的靜態Merge方法之間的差異。 EO.Pdf實施: // NuGet: Install-Package EO.Pdf using EO.Pdf; using System; class Program { static void Main() { PdfDocument doc1 = new PdfDocument("file1.pdf"); PdfDocument doc2 = new PdfDocument("file2.pdf"); PdfDocument mergedDoc = new PdfDocument(); mergedDoc.Append(doc1); mergedDoc.Append(doc2); mergedDoc.Save("merged.pdf"); Console.WriteLine("PDFs merged successfully!"); } } // NuGet: Install-Package EO.Pdf using EO.Pdf; using System; class Program { static void Main() { PdfDocument doc1 = new PdfDocument("file1.pdf"); PdfDocument doc2 = new PdfDocument("file2.pdf"); PdfDocument mergedDoc = new PdfDocument(); mergedDoc.Append(doc1); mergedDoc.Append(doc2); mergedDoc.Save("merged.pdf"); Console.WriteLine("PDFs merged successfully!"); } } $vbLabelText $csharpLabel IronPDF實現: // NuGet: Install-Package IronPdf using IronPdf; using System; using System.Collections.Generic; class Program { static void Main() { var pdf1 = PdfDocument.FromFile("file1.pdf"); var pdf2 = PdfDocument.FromFile("file2.pdf"); var merged = PdfDocument.Merge(new List<PdfDocument> { pdf1, pdf2 }); merged.SaveAs("merged.pdf"); Console.WriteLine("PDFs merged successfully!"); } } // NuGet: Install-Package IronPdf using IronPdf; using System; using System.Collections.Generic; class Program { static void Main() { var pdf1 = PdfDocument.FromFile("file1.pdf"); var pdf2 = PdfDocument.FromFile("file2.pdf"); var merged = PdfDocument.Merge(new List<PdfDocument> { pdf1, pdf2 }); merged.SaveAs("merged.pdf"); Console.WriteLine("PDFs merged successfully!"); } } $vbLabelText $csharpLabel IronPDF 的靜態Merge方法接受一組文檔,簡化了多文檔合併。 請注意建構函式( new PdfDocument(path) )到靜態工廠( PdfDocument.FromFile(path) )的變更。 更多選項請參閱PDF 合併文件。 關鍵遷移說明 邊際單位轉換 EO.Pdf 在OutputArea中使用英吋。 IronPDF 使用毫米作為單位。 換算公式: inches × 25.4 = mm // EO.Pdf - 0.5 inch margins options.OutputArea = new RectangleF(0.5f, 0.5f, 7.5f, 10.5f); // IronPDF - equivalent in millimeters (0.5" = 12.7mm) renderer.RenderingOptions.MarginTop = 12.7; renderer.RenderingOptions.MarginBottom = 12.7; renderer.RenderingOptions.MarginLeft = 12.7; renderer.RenderingOptions.MarginRight = 12.7; // EO.Pdf - 0.5 inch margins options.OutputArea = new RectangleF(0.5f, 0.5f, 7.5f, 10.5f); // IronPDF - equivalent in millimeters (0.5" = 12.7mm) renderer.RenderingOptions.MarginTop = 12.7; renderer.RenderingOptions.MarginBottom = 12.7; renderer.RenderingOptions.MarginLeft = 12.7; renderer.RenderingOptions.MarginRight = 12.7; $vbLabelText $csharpLabel 從靜態配置到基於實例的配置 將所有HtmlToPdf.Options.X替換為renderer.RenderingOptions.X : // EO.Pdf - static options (NOT thread-safe!) HtmlToPdf.Options.PageSize = PdfPageSizes.A4; // IronPDF - instance options (thread-safe) var renderer = new ChromePdfRenderer(); renderer.RenderingOptions.PaperSize = PdfPaperSize.A4; // EO.Pdf - static options (NOT thread-safe!) HtmlToPdf.Options.PageSize = PdfPageSizes.A4; // IronPDF - instance options (thread-safe) var renderer = new ChromePdfRenderer(); renderer.RenderingOptions.PaperSize = PdfPaperSize.A4; $vbLabelText $csharpLabel ACM 到 HTML 的遷移 如果使用 EO.Pdf 的高階內容模型( AcmRender 、 AcmText 、 AcmBlock ),請移轉至標準 HTML/CSS: // EO.Pdf ACM approach var acmContent = new AcmContent(); acmContent.Add(new AcmText("Sample Text")); // IronPDF HTML approach var html = "<div>Sample Text</div>"; var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf(html); // EO.Pdf ACM approach var acmContent = new AcmContent(); acmContent.Add(new AcmText("Sample Text")); // IronPDF HTML approach var html = "<div>Sample Text</div>"; var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf(html); $vbLabelText $csharpLabel 兩步驟保存模式 EO.Pdf 直接保存在ConvertHtml()中。 IronPDF 傳回PdfDocument對象,然後呼叫SaveAs() : // EO.Pdf - one step HtmlToPdf.ConvertHtml(html, "output.pdf"); // IronPDF - two steps (enables manipulation before save) var pdf = renderer.RenderHtmlAsPdf(html); pdf.SaveAs("output.pdf"); // EO.Pdf - one step HtmlToPdf.ConvertHtml(html, "output.pdf"); // IronPDF - two steps (enables manipulation before save) var pdf = renderer.RenderHtmlAsPdf(html); pdf.SaveAs("output.pdf"); $vbLabelText $csharpLabel 建構函數到靜態工廠 將new PdfDocument(path)替換為PdfDocument.FromFile(path) : // EO.Pdf var doc = new PdfDocument("file.pdf"); // IronPDF var doc = PdfDocument.FromFile("file.pdf"); // EO.Pdf var doc = new PdfDocument("file.pdf"); // IronPDF var doc = PdfDocument.FromFile("file.pdf"); $vbLabelText $csharpLabel 遷移後檢查清單 程式碼遷移完成後,請驗證以下內容: 產生PDF檔案的可視化比較 驗證頁首/頁尾是否正確顯示。 測試安全/加密設置 驗證合併操作 性能基準測試 跨平台測試(Windows、Linux、macOS) 刪除 EO.Pdf 授權文件 更新文檔 讓您的 PDF 基礎架構面向未來 隨著 .NET 10 即將到來,C# 14 也引入了新的語言特性,選擇一個具有現代 .NET 原生支援的 PDF 程式庫可以確保長期的兼容性。 IronPDF 基於實例、線程安全的架構符合當代 Web 應用程式模式——這對於多租戶 SaaS 應用程式來說尤其重要,因為 EO.Pdf 的靜態全域選項會造成並發問題。 其他資源 IronPDF 文件 HTML 轉 PDF 教學課程 API 參考 NuGet 套件 -授權選項 從 EO.Pdf 遷移到 IronPDF 可以消除 126MB 的包膨脹、遺留的 IE 時代遺留問題以及靜態全局選項帶來的線程安全問題。 過渡到基於實例的配置可確保您的 PDF 生成程式碼在多執行緒 Web 應用程式中可靠地運行,同時提供真正的跨平台部署支援。 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 ExpertPdf to IronPDF in C#How to Migrate from Easy PDF SDK 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. 閱讀更多