MIGRATION GUIDES How to Migrate from Gnostice PDFOne 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 上分享 複製連結 電子郵件文章 從 諾斯底 PDFOne 遷移到 IronPDF 會將您的 .NET PDF 工作流程從基於座標、平台碎片化的方法轉變為統一的、基於 HTML/CSS 的解決方案,並完全支援現代 Web 標準。 本指南提供了一個全面的、循序漸進的遷移路徑,消除了專業 .NET 開發人員在 CSS、JavaScript 和記憶體穩定性方面已知的限制。 為什麼要從 諾斯底 PDFOne 遷移到 IronPDF 諾斯底 PDFOne 挑戰 Gnostice PDFOne 和 Document Studio .NET 存在一些有據可查的局限性,這些局限性會影響生產應用程式: 1.不支援外部 CSS: 諾斯底 PDFOne 的文檔明確指出它不支援外部 CSS 樣式表-這是現代 Web 到 PDF 轉換的基本要求。 2.無法執行 JavaScript:需要 JavaScript 的動態內容無法渲染,因此無法準確地轉換現代 Web 應用程式。 3.不支援直接 HTML 轉 PDF: 諾斯底 PDFOne 不支援直接 HTML 轉 PDF 轉換。 您需要使用 Document Studio 進行 HTML 轉換,或手動解析和渲染 HTML 元素—這會造成很大的開發開銷。 4.平台碎片化: WinForms、WPF、ASP.NET 和 Xamarin 各自擁有獨立的產品,功能集和 API 也各不相同。您可能需要多個許可證和程式碼庫。 5.記憶體洩漏和穩定性:使用者論壇和 Stack Overflow 報告稱,在處理影像時有持續的記憶體洩漏、JPEG 錯誤 #53 和 StackOverflow 異常。 6.不支援從右到左的 Unicode:明確不支援阿拉伯語、希伯來語和其他 RTL 語言——這對國際應用來說是一個致命缺陷。 7.數位簽章支援有限: 諾斯底 PDFOne 一直以來都缺乏數位簽章功能或數位簽章功能不可靠。 8.基於座標的 API:許多操作需要手動 X/Y 定位,而不是現代佈局方法,因此每個元素的放置都需要精確計算。 Gnostic PDFOne 與 IronPDF 對比 方面 諾斯底 PDFOne IronPDF 外部 CSS 不支援 全力支持 JavaScript 執行 不支援 全鉻發動機 RTL語言 不支援 完全支援 Unicode 數位簽名 有限/缺失 完全支援 X509 平台 碎片化產品 單一統一庫 記憶體穩定性 已報告的問題 穩定、管理良好 HTML 轉 PDF 基本功能,需要變通方法 Chrome 品質渲染 學習曲線 複雜 API 簡單直覺的 API 現代 CSS(Flexbox、Grid) 不支援 完全支援 CSS3 影像處理 已知問題 可靠的 對於計劃在 2025 年和 2026 年採用 .NET 10 和 C# 14 的團隊,IronPDF 提供了一個面向未來的基礎,其統一的庫可以在所有 .NET 平台上一致地運行。 遷移複雜度評估 各功能預計工作量 特徵 遷移複雜性 筆記 載入/儲存PDF文件 非常低 直接映射 合併PDF 非常低 直接映射 拆分PDF 低的 類似方法 文字擷取 低的 方法名稱更改 水印 低的 IronPDF 讓一切變得更簡單 頁首/頁尾 低的 基於HTML的方法 HTML 轉 PDF 低的 IronPDF 更好 加密 中等的 不同的API結構 表單字段 中等的 財產使用權差異 數位簽名 低的 現在已支援(在 諾斯底 PDFOne 中不穩定) 您將獲得的功能 從 諾斯底 PDFOne 遷移到 IronPDF 時,以下這些先前不可能實現的功能將變為可用: 外部 CSS 樣式表 JavaScript 執行 支援從右到左的語言(阿拉伯語、希伯來語) CSS Grid 和 Flexbox 可靠的數位簽名 更好的記憶體管理 使用單一程式碼庫實現跨平台支持 開始之前 先決條件 .NET 版本: IronPDF 支援 .NET Framework 4.6.2+ 和 .NET Core 2.0+ / .NET 5/6/7/8/9+ 2.許可證密鑰:從ironpdf.com取得您的 IronPDF 許可證密鑰。 3.備份:建立一個用於遷移工作的分支 辨識所有 Gnosice PDFOne 的使用情況 # Find all Gnostice references grep -r "Gnostice\|PDFOne\|PDFDocument\|PDFPage\|DocExporter" --include="*.cs" . # Find package references grep -r "Gnostice\|PDFOne" --include="*.csproj" . # Find all Gnostice references grep -r "Gnostice\|PDFOne\|PDFDocument\|PDFPage\|DocExporter" --include="*.cs" . # Find package references grep -r "Gnostice\|PDFOne" --include="*.csproj" . SHELL NuGet 套件變更 # Remove 諾斯底 PDFOne packages dotnet remove package PDFOne.NET dotnet remove package Gnostice.DocumentStudio.NET dotnet remove package Gnostice.PDFOne.NET dotnet remove package Gnostice.XtremeDocumentStudio.NET # Install IronPDF dotnet add package IronPdf # Remove 諾斯底 PDFOne packages dotnet remove package PDFOne.NET dotnet remove package Gnostice.DocumentStudio.NET dotnet remove package Gnostice.PDFOne.NET dotnet remove package Gnostice.XtremeDocumentStudio.NET # Install IronPDF dotnet add package IronPdf SHELL 快速入門遷移 步驟 1:更新許可證配置 之前(Gnostic PDFOne): // Gnostice license often set via config or property PDFOne.License.LicenseKey = "YOUR-GNOSTICE-LICENSE"; // Gnostice license often set via config or property PDFOne.License.LicenseKey = "YOUR-GNOSTICE-LICENSE"; $vbLabelText $csharpLabel (IronPDF 之後): // Set once at application startup IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY"; // Or in appsettings.json: // { "IronPdf.License.LicenseKey": "YOUR-LICENSE-KEY" } // Set once at application startup IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY"; // Or in appsettings.json: // { "IronPdf.License.LicenseKey": "YOUR-LICENSE-KEY" } $vbLabelText $csharpLabel 步驟 2:更新命名空間導入 // Before (Gnostice PDFOne) using Gnostice.PDFOne; using Gnostice.PDFOne.Document; using Gnostice.PDFOne.Graphics; // After (IronPDF) using IronPdf; using IronPdf.Editing; // Before (Gnostice PDFOne) using Gnostice.PDFOne; using Gnostice.PDFOne.Document; using Gnostice.PDFOne.Graphics; // After (IronPDF) using IronPdf; using IronPdf.Editing; $vbLabelText $csharpLabel 完整 API 參考 核心類別映射 諾斯底 PDFOne IronPDF 描述 PDFDocument PdfDocument 主 PDF 文件類 PDFPage PdfDocument.Pages[i] 頁面表示 PDFFont CSS樣式 字體規範 PDFTextElement HTML 內容 文字內容 PDFImageElement HTML<img>標籤 圖片內容 DocExporter ChromePdfRenderer HTML/URL 轉 PDF 文檔操作 諾斯底 PDFOne IronPDF 筆記 new PDFDocument() new PdfDocument() 建立新文檔 doc.Load(path) PdfDocument.FromFile(path) 從檔案載入 doc.Open() 不適用(自動) 開啟文件 doc.Save(path) pdf.SaveAs(path) 儲存到文件 doc.Close() pdf.Dispose() 發布資源 doc.Pages.Count pdf.PageCount 頁數 doc.Pages.Add() 渲染 HTML 或合併 新增頁面 合併操作 諾斯底 PDFOne IronPDF 筆記 doc.Append(otherDoc) PdfDocument.Merge(pdf1, pdf2) 合併文檔 多次調用Append() PdfDocument.Merge(list) 合併多個 程式碼遷移範例 範例 1:HTML 轉 PDF 之前(Gnostic PDFOne): // NuGet: Install-Package Gnostice.PDFOne.DLL using Gnostice.PDFOne; using Gnostice.PDFOne.Graphics; using System; class Program { static void Main() { PDFDocument doc = new PDFDocument(); doc.Open(); PDFPage page = doc.Pages.Add(); // PDFOne doesn't have direct HTML 轉 PDF conversion // You need to use Document Studio for HTML conversion // Or manually parse and render HTML elements PDFTextElement textElement = new PDFTextElement(); textElement.Text = "Simple text conversion instead of HTML"; textElement.Draw(page, 10, 10); doc.Save("output.pdf"); doc.Close(); } } // NuGet: Install-Package Gnostice.PDFOne.DLL using Gnostice.PDFOne; using Gnostice.PDFOne.Graphics; using System; class Program { static void Main() { PDFDocument doc = new PDFDocument(); doc.Open(); PDFPage page = doc.Pages.Add(); // PDFOne doesn't have direct HTML 轉 PDF conversion // You need to use Document Studio for HTML conversion // Or manually parse and render HTML elements PDFTextElement textElement = new PDFTextElement(); textElement.Text = "Simple text conversion instead of HTML"; textElement.Draw(page, 10, 10); doc.Save("output.pdf"); doc.Close(); } } $vbLabelText $csharpLabel (IronPDF 之後): // NuGet: Install-Package IronPdf using IronPdf; using System; class Program { static void Main() { var renderer = new ChromePdfRenderer(); string html = "<h1>Hello World</h1><p>This is HTML content.</p>"; var pdf = renderer.RenderHtmlAsPdf(html); pdf.SaveAs("output.pdf"); } } // NuGet: Install-Package IronPdf using IronPdf; using System; class Program { static void Main() { var renderer = new ChromePdfRenderer(); string html = "<h1>Hello World</h1><p>This is HTML content.</p>"; var pdf = renderer.RenderHtmlAsPdf(html); pdf.SaveAs("output.pdf"); } } $vbLabelText $csharpLabel 差異很大:Gnostice PDFOne 不能直接將 HTML 轉換為 PDF——您必須手動建立文字元素並使用座標來定位它們。 IronPDF 的ChromePdfRenderer提供直接 HTML 渲染,並完全支援 CSS3 和 JavaScript。 如需更多渲染選項,請參閱HTML 轉 PDF 文件。 範例 2:合併 PDF 文件 之前(Gnostic PDFOne): // NuGet: Install-Package Gnostice.PDFOne.DLL using Gnostice.PDFOne; using Gnostice.PDFOne.Document; using System; class Program { static void Main() { PDFDocument doc1 = new PDFDocument(); doc1.Load("document1.pdf"); PDFDocument doc2 = new PDFDocument(); doc2.Load("document2.pdf"); PDFDocument mergedDoc = new PDFDocument(); mergedDoc.Open(); mergedDoc.Append(doc1); mergedDoc.Append(doc2); mergedDoc.Save("merged.pdf"); doc1.Close(); doc2.Close(); mergedDoc.Close(); } } // NuGet: Install-Package Gnostice.PDFOne.DLL using Gnostice.PDFOne; using Gnostice.PDFOne.Document; using System; class Program { static void Main() { PDFDocument doc1 = new PDFDocument(); doc1.Load("document1.pdf"); PDFDocument doc2 = new PDFDocument(); doc2.Load("document2.pdf"); PDFDocument mergedDoc = new PDFDocument(); mergedDoc.Open(); mergedDoc.Append(doc1); mergedDoc.Append(doc2); mergedDoc.Save("merged.pdf"); doc1.Close(); doc2.Close(); mergedDoc.Close(); } } $vbLabelText $csharpLabel (IronPDF 之後): // NuGet: Install-Package IronPdf using IronPdf; using System; using System.Collections.Generic; class Program { static void Main() { var pdf1 = PdfDocument.FromFile("document1.pdf"); var pdf2 = PdfDocument.FromFile("document2.pdf"); var merged = PdfDocument.Merge(pdf1, pdf2); merged.SaveAs("merged.pdf"); } } // NuGet: Install-Package IronPdf using IronPdf; using System; using System.Collections.Generic; class Program { static void Main() { var pdf1 = PdfDocument.FromFile("document1.pdf"); var pdf2 = PdfDocument.FromFile("document2.pdf"); var merged = PdfDocument.Merge(pdf1, pdf2); merged.SaveAs("merged.pdf"); } } $vbLabelText $csharpLabel Gnostice PDFOne 方法需要建立一個新文檔,開啟它,分別載入來源文檔,將每個來源文檔附加到文檔中,然後手動關閉所有三個文件。 IronPDF 的靜態Merge方法只需三行程式碼即可處理此問題,並具有適當的資源管理。 了解更多關於合併和拆分PDF的資訊。 範例 3:向 PDF 新增浮水印 之前(Gnostic PDFOne): // NuGet: Install-Package Gnostice.PDFOne.DLL using Gnostice.PDFOne; using Gnostice.PDFOne.Graphics; using System; using System.Drawing; class Program { static void Main() { PDFDocument doc = new PDFDocument(); doc.Load("input.pdf"); PDFFont font = new PDFFont(PDFStandardFont.Helvetica, 48); foreach (PDFPage page in doc.Pages) { PDFTextElement watermark = new PDFTextElement(); watermark.Text = "CONFIDENTIAL"; watermark.Font = font; watermark.Color = Color.FromArgb(128, 255, 0, 0); watermark.RotationAngle = 45; watermark.Draw(page, 200, 400); } doc.Save("watermarked.pdf"); doc.Close(); } } // NuGet: Install-Package Gnostice.PDFOne.DLL using Gnostice.PDFOne; using Gnostice.PDFOne.Graphics; using System; using System.Drawing; class Program { static void Main() { PDFDocument doc = new PDFDocument(); doc.Load("input.pdf"); PDFFont font = new PDFFont(PDFStandardFont.Helvetica, 48); foreach (PDFPage page in doc.Pages) { PDFTextElement watermark = new PDFTextElement(); watermark.Text = "CONFIDENTIAL"; watermark.Font = font; watermark.Color = Color.FromArgb(128, 255, 0, 0); watermark.RotationAngle = 45; watermark.Draw(page, 200, 400); } doc.Save("watermarked.pdf"); doc.Close(); } } $vbLabelText $csharpLabel (IronPDF 之後): // NuGet: Install-Package IronPdf using IronPdf; using IronPdf.Editing; using System; class Program { static void Main() { var pdf = PdfDocument.FromFile("input.pdf"); var watermark = new TextStamper() { Text = "CONFIDENTIAL", FontSize = 48, Opacity = 50, Rotation = 45, VerticalAlignment = VerticalAlignment.Middle, HorizontalAlignment = HorizontalAlignment.Center }; pdf.ApplyStamp(watermark); pdf.SaveAs("watermarked.pdf"); } } // NuGet: Install-Package IronPdf using IronPdf; using IronPdf.Editing; using System; class Program { static void Main() { var pdf = PdfDocument.FromFile("input.pdf"); var watermark = new TextStamper() { Text = "CONFIDENTIAL", FontSize = 48, Opacity = 50, Rotation = 45, VerticalAlignment = VerticalAlignment.Middle, HorizontalAlignment = HorizontalAlignment.Center }; pdf.ApplyStamp(watermark); pdf.SaveAs("watermarked.pdf"); } } $vbLabelText $csharpLabel Gnostice PDFOne 方法需要建立PDFFont對象,手動遍歷頁面,計算座標 (200, 400),並設定PDFTextElement物件的屬性。 IronPDF 的TextStamper提供聲明式配置,可自動居中和頁面套用-無需座標計算。 請參閱浮水印文件以了解更多選項。 關鍵遷移說明 基於座標的 HTML/CSS 佈局 這次 諾斯底 PDFOne 遷移中最顯著的典範轉移是從基於座標的定位轉向 HTML/CSS 佈局: // Gnostice PDFOne: Manual coordinate positioning watermark.Draw(page, 200, 400); // X=200, Y=400 // IronPDF: Declarative alignment watermark.VerticalAlignment = VerticalAlignment.Middle; watermark.HorizontalAlignment = HorizontalAlignment.Center; // Gnostice PDFOne: Manual coordinate positioning watermark.Draw(page, 200, 400); // X=200, Y=400 // IronPDF: Declarative alignment watermark.VerticalAlignment = VerticalAlignment.Middle; watermark.HorizontalAlignment = HorizontalAlignment.Center; $vbLabelText $csharpLabel 將字體物件轉換為 CSS 樣式 // Gnostice PDFOne PDFFont font = new PDFFont(PDFStandardFont.Helvetica, 48); watermark.Font = font; // IronPDF - use CSS in HTML content var html = "<span style='font-family: Helvetica, Arial, sans-serif; font-size: 48pt;'>Text</span>"; // Gnostice PDFOne PDFFont font = new PDFFont(PDFStandardFont.Helvetica, 48); watermark.Font = font; // IronPDF - use CSS in HTML content var html = "<span style='font-family: Helvetica, Arial, sans-serif; font-size: 48pt;'>Text</span>"; $vbLabelText $csharpLabel 頁面索引 Gnostice PDFOne 通常使用索引為 1 的頁面,而 IronPDF 則使用索引為 0 的頁面(標準的 .NET 約定): // Gnostice PDFOne: May use 1-indexed var page = doc.Pages[1]; // First page // IronPDF: 0-indexed var page = pdf.Pages[0]; // First page // Gnostice PDFOne: May use 1-indexed var page = doc.Pages[1]; // First page // IronPDF: 0-indexed var page = pdf.Pages[0]; // First page $vbLabelText $csharpLabel 現在可用的功能 從 諾斯底 PDFOne 遷移到 IronPDF 後,先前存在問題或無法實現的功能將變為可用: -外部 CSS:先前在 諾斯底 PDFOne 中無法正常運作的樣式表現在可以正確渲染了。 JavaScript 內容:先前缺少的動態內容現在已顯示。 RTL 語言:阿拉伯語、希伯來語和其他從右到左的語言都能正常運作。 CSS Grid 和 Flexbox:完全支援現代佈局技術 -數位簽名:可靠的 X509 憑證簽名 故障排除 問題 1:未找到 PDFTextElement 問題: IronPDF 中不存在PDFTextElement 。 解決方案:使用 HTML 內容或 TextStamper: // For new documents - render HTML var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf("<p>Your text here</p>"); // For existing documents - use stampers var stamper = new TextStamper() { Text = "Added Text" }; pdf.ApplyStamp(stamper); // For new documents - render HTML var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf("<p>Your text here</p>"); // For existing documents - use stampers var stamper = new TextStamper() { Text = "Added Text" }; pdf.ApplyStamp(stamper); $vbLabelText $csharpLabel 問題 2:PDF 字體對象 問題: 諾斯底 PDFOne 使用PDFFont物件; IronPDF 使用 CSS。 解決方案: // Gnostice PDFOne PDFFont font = new PDFFont(PDFStandardFont.Helvetica, 12); // IronPDF - use CSS var html = "<span style='font-family: Helvetica, Arial, sans-serif; font-size: 12pt;'>Text</span>"; // Gnostice PDFOne PDFFont font = new PDFFont(PDFStandardFont.Helvetica, 12); // IronPDF - use CSS var html = "<span style='font-family: Helvetica, Arial, sans-serif; font-size: 12pt;'>Text</span>"; $vbLabelText $csharpLabel 問題 3:找不到 DocExporter 問題: IronPDF 中不存在DocExporter類別。 解決方案:使用ChromePdfRenderer : // Gnostice PDFOne DocExporter exporter = new DocExporter(); exporter.Export(doc, "output.pdf", DocumentFormat.PDF); // IronPDF var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlFileAsPdf("input.html"); pdf.SaveAs("output.pdf"); // Gnostice PDFOne DocExporter exporter = new DocExporter(); exporter.Export(doc, "output.pdf", DocumentFormat.PDF); // IronPDF var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlFileAsPdf("input.html"); pdf.SaveAs("output.pdf"); $vbLabelText $csharpLabel 問題 4:記憶體改進 問題: 諾斯底 PDFOne 報告有記憶體洩漏。 解決方案: IronPDF 提供穩定的記憶體管理。 使用正確的垃圾處理方式: using (var pdf = PdfDocument.FromFile("large.pdf")) { // Process PDF pdf.SaveAs("output.pdf"); } // Automatically disposed using (var pdf = PdfDocument.FromFile("large.pdf")) { // Process PDF pdf.SaveAs("output.pdf"); } // Automatically disposed $vbLabelText $csharpLabel 遷移清單 遷移前 清點程式碼庫中所有 諾斯底 PDFOne 的使用情況 注意之前無法正常運作的功能(CSS、JS、RTL)-現在它們都能正常運作了! 文檔記憶體問題,用於比較測試 取得 IronPDF 許可證密鑰 在版本控制系統中建立遷移分支 程式碼遷移 移除 諾斯底 PDFOne NuGet 套件 安裝 IronPdf NuGet 套件: dotnet add package IronPdf 更新命名空間匯入 更換許可證密鑰設置 將PDFDocument轉換為PdfDocument 將DocExporter轉換為ChromePdfRenderer 將基於座標的繪圖替換為 HTML 戳記 將PDFFont更新為 CSS 樣式 將doc.Append()轉換為PdfDocument.Merge() 測試 測試 HTML 到 PDF 的轉換 驗證外部 CSS 現在有效 測試依賴 JavaScript 的內容 測試 RTL 語言(如有需要) 測試數位簽章(現已推出!) 測試 PDF 合併 測試浮水印 比較記憶體使用情況 移民後 移除 Gnostic PDFOne 許可證 更新文檔 移除針對 諾斯底 PDFOne 限制的變通方案 訓練團隊使用 IronPDF API 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 Gotenberg to IronPDF in C#How to Migrate from Ghostscript GPL...
發表日期 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. 閱讀更多