跳過到頁腳內容
遷移指南

如何在 C# 中從 EO.Pdf 遷移到 IronPDF

從 EO.Pdf 遷移到 IronPDF:完整的 C# 遷移指南。

EO.Pdf 是一個商用的 .NET PDF 函式庫,利用基於 Chromium 的渲染技術進行 HTML 到 PDF 的轉換。 雖然 EO.Pdf 提供符合 W3C 標準的渲染,但其架構卻帶來了重大的挑戰:126MB 的龐大套件大小會導致 Docker 映像檔膨脹並減慢部署速度,其基於原始 Internet Explorer 引擎的遺留包袱,靜態全局選項對於多租戶應用程式而言不是線程安全的,以及以 Windows 為中心的設計(儘管有跨平台的宣稱)。 這份全面的指南提供了從 EO.Pdf 到IronPDF的逐步遷移路徑 -IronPDFfor .NET 是一個現代化的 .NET PDF 函式庫,具有最佳化的 Chromium 包裝、基於實例的線程安全組態,以及真正的跨平台支援。

為什麼要從 EO.Pdf 轉移到 IronPDF? EO.Pdf 提出了幾項架構上的挑戰,促使開發團隊評估替代方案。 了解這些問題對於規劃您的移轉策略至關重要。 ### EO.Pdf 的問題 1.**大容量的126MB套件大小**:EO.Pdf 綁定了自己的 Chromium 引擎,因此部署時會佔用126MB的空間。 這會擴大 Docker 映像、減慢 CI/CD 管道速度,並增加基礎架構成本。 2.**Legacy Architecture Baggage**:EO.Pdf 在轉移到 Chromium 之前,原本是建構在 Internet Explorer 的渲染引擎上。 這些遺留的問題包括 IE 時代的相容性、API 設計上的技術負債,以及不同版本間不一致的行為。 3.**以 Windows 為中心的設計**:儘管 EO.Pdf 以"跨平台"行銷,但對 Linux 和 macOS 的支援有限。 許多開發人員報告了非 Windows 部署的問題。 4.**靜態全局選項**:EO.Pdf 使用靜態 `HtmlToPdf.Options` 進行設定,這並非線程安全,而且在多租戶 web 應用程式中會有問題。 5.**每個授權 799 美元**:EO.Pdf 每份開發人員授權的價格為 799 美元,相較於提供類似或更好功能的替代方案,EO.Pdf 的價格較為昂貴。 ### 架構比較 |範疇| EO.Pdf |IronPDF| |--------|--------|---------| |**套件大小**|126MB|已優化 (~50MB)| |**法律問題**|IE 移動包袱|乾淨、現代化的程式碼| | **平台支援** |以 Windows 為重點|真正的跨平台| |**配置**|靜態/全局(非線程安全)|基於實例、線程安全| |**API 設計**|混合 (HtmlToPdf + ACM)|統一、一致| |**說明文件**|限額|全面的教學| |**現代 .NET**|.NET 標準|.NET 6/7/8/9+ 原生| |**Async 支援**|限額|完整的 async/await| ### 主要遷移優勢 1.**50% Smaller Footprint**: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](https://ironpdf.com/licensing/) 網站免費試用) ### 審核 EO.Pdf 使用情況 在您的解決方案目錄中執行這些指令,以辨識所有 EO.Pdf 參考資料: ```bash # Find all EO.Pdf references grep -r "EO.Pdf\|HtmlToPdf\|AcmRender\|PdfDocument" --include="*.cs" . # Check NuGet packages dotnet list package | grep -i "EO.Pdf" ``` 需要尋找的常見 EO.Pdf 命名空間: - `EO.Pdf` - Core HTML to PDF - `EO.Pdf.Acm` - 進階內容模型 (ACM) - `EO.Pdf.Contents` - 低階內容處理 - `EO.Pdf.Drawing` - 圖形操作 ### 瞭解核心模式變更 EO.Pdf 與IronPDF在架構上最顯著的差異在於配置範圍。 EO.Pdf 使用具有全局選項的靜態方法,這些選項會影響所有的轉換 - 這種模式會導致 web 應用程式中的線程安全問題。IronPDF使用具有本地選項的基於實例的渲染器,確保每次轉換都是獨立的。 ## 逐步遷移的過程 ### 步驟 1:更新 NuGet 套件 移除 EO.Pdf 並安裝 IronPDF: ```bash # Remove EO.Pdf dotnet remove package EO.Pdf # Install IronPDF dotnet add package IronPdf ``` ### 步驟 2:更新命名空間參考資料 用IronPDF取代 EO.Pdf 命名空間: ```csharp // Remove these using EO.Pdf; using EO.Pdf.Acm; // Add this using IronPdf; ``` ### 步驟 3:配置授權 ```csharp // Add at application startup (Program.cs or Startup.cs) IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"; ``` ## 完整的 API 遷移參考。 ### 核心類映射 |EO.Pdf 類別|IronPdf 同等級產品| 筆記 | |-------------|-------------------|-------| |<編碼>HtmlToPdfChromePdfRendererPDF 文件PDF 文件HtmlToPdfOptionsAcmRenderAcmText`, `

`| | |<編碼>AcmBlock`| | ### 方法映射 |EO.Pdf 方法|IronPdf 方法| 筆記 | |--------------|----------------|-------| |`HtmlToPdf.ConvertHtml(html,path)`。|`renderer.RenderHtmlAsPdf(html)` 然後是 `SaveAs(path)`|IronPDF 中的兩個步驟| |`HtmlToPdf.ConvertUrl(url,path)`。|`renderer.RenderUrlAsPdf(url)` 然後是 `SaveAs(path)`| | |<代碼>PdfDocument.Save(路徑)pdf.SaveAs(路徑)

Hello World

This is a PDF generated from HTML.

"; HtmlToPdf.ConvertHtml(html, "output.pdf"); Console.WriteLine("PDF created successfully!"); } } ``` **IronPDF 實作:** ```csharp // NuGet: Install-Package IronPdf using IronPdf; using System; class Program { static void Main() { string html = "

Hello World

This is a PDF generated from HTML.

"; var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf(html); pdf.SaveAs("output.pdf"); Console.WriteLine("PDF created successfully!"); } } ``` IronPdf 的兩步模式(渲染,然後儲存)提供了對<編碼>PDF 文件{ pdf1, pdf2 }); merged.SaveAs("merged.pdf"); Console.WriteLine("PDFs merged successfully!"); } } ``` IronPdf 的靜態 `Merge` 方法接受一個文件集合,簡化了多文件合併。 注意從構建器(`new PdfDocument(path)`)改變為靜態工廠(`PdfDocument.FromFile(path)`)。 如需更多選項,請參閱 [IronPDF合併文件](https://ironpdf.com/how-to/merge-split-pdfs/)。 ## 關鍵遷移注意事項 ### 邊際單位轉換 EO.Pdf 在 `OutputArea` 中使用英寸。 IronPdf 使用毫米。 轉換使用:`inches × 25.4 = mm` (英吋) ```csharp // 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; ``` ### 從靜態配置到基於實例的配置 將所有 `HtmlToPdf.Options.X` 替換為 `renderer.RenderingOptions.X` : ```csharp // 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; ``` ### ACM 到 HTML 的轉換 如果使用 EO.Pdf 的進階內容模型 (`AcmRender`、`AcmText`、`AcmBlock`),請轉換為標準 HTML/CSS: ```csharp // EO.Pdf ACM approach var acmContent = new AcmContent(); acmContent.Add(new AcmText("Sample Text")); //IronPDFHTML approach var html = "
Sample Text
"; var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf(html); ``` ### 兩步儲存模式 EO.Pdf 可直接儲存於 `ConvertHtml()` 中。IronPDF返回一個<編碼>PDF 文件
Curtis Chau
技術作家

Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。

相關文章