跳過到頁腳內容
遷移指南

如何在 C# 中從 DynamicPDF 轉移到 IronPDF

從動態 PDF移轉至 IronPDF:完整的 C# 遷移指南。

DynamicPDF 是一個歷史悠久的 .NET PDF 函式庫,以其橫跨 PDF 產生、合併和操作的完整功能集而聞名。 然而,DynamicPDF 的分散式產品模式(需要為 Generator、Merger、HTML Converter 及其他元件分別取得授權)為開發團隊帶來複雜性與成本上的挑戰。 本綜合指南提供了從動態 PDF到IronPDF的逐步遷移路徑--IronPDF 是一個多合一的 .NET PDF 函式庫,它將生成、操作和 HTML 轉換結合在單一套件中,並採用基於 Chromium 的現代渲染技術。

為什麼要從動態 PDF轉移到 IronPDF? DynamicPDF 的產品分散是遷移的主要動力。 瞭解授權模式對於評估您目前實作的真正成本至關重要。 ### 產品分散的問題 DynamicPDF 以獨立授權的獨立產品形式銷售: 1.**DynamicPDF Generator**:從零開始建立 PDF 2.**DynamicPDF Merger**:合併、分割和處理現有的 PDF (需另外購買) 3.**DynamicPDF Core Suite**:結合產生器與合併器 4.**DynamicPDF ReportWriter**:報告產生 5.**DynamicPDF HTML Converter**:HTML 到 PDF 的轉換(單獨的附加元件) 6.**DynamicPDF Print Manager**:以程式化方式列印 PDF 完整的 PDF 解決方案需要 3-5 個動態 PDF獨立授權。 IronPdf 在一個套件中包含了所有內容。 ### 架構比較 |範疇|動態 PDF|IronPDF| |--------|------------|---------| |**產品模式**|零散(5 種以上產品)|多合一程式庫| |**授權**|需要多個授權|單一授權| |**HTML至PDF**|另外購買附加元件|內建、基於 Chromium| |**CSS 支援**|有限 (需要附加元件)|完整的 CSS3 與 Flexbox/Grid| |**API 風格**|基於座標的定位|HTML/CSS + 操作 API| |**學習曲線**|Steep (多種 API)|溫和 (網路技術)| |**現代 .NET**|.NET Standard 2.0|.NET 6/7/8/9+ 原生| ### 主要遷移優勢 1.**單一套件**:一個 NuGet 套件取代 3-5 個動態 PDF套件 2.**現代渲染**:Chromium 引擎與傳統渲染的比較 3.**網頁技術**:使用 HTML/CSS 取代基於座標的定位 4.**更簡單的 API**:程式碼更少、可讀性更高、維護更容易 5.**無附加購買**:HTML、合併、安全性皆包含在內 ## 遷移前的準備工作 ### 先決條件 確保您的環境符合這些要求: - .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/) 網站免費試用) ### 審核動態 PDF使用情況 在您的解決方案目錄中執行這些指令,以識別所有動態 PDF參考資料: ```bash # Find all動態 PDFreferences grep -r "ceTe.DynamicPDF\|DynamicPDF" --include="*.cs" --include="*.csproj" . # Check NuGet packages dotnet list package | grep -i dynamic ``` 需要尋找的常見套件: - `ceTe.DynamicPDF.CoreSuite.NET`。 - `ceTe.DynamicPDF.Generator.NET`。 -<編碼>ceTe.DynamicPDF.Merger.NETChromePdfRendererPDF 文件頁面` 帶分頁符號|或多重渲染| |<編碼>MergeDocumentPdfDocument.Merge()HtmlConverterChromePdfRenderer`, ``, `
`| |`文字區域`|`
`、`

`與 CSS| |`圖片`|` related to 從動態 PDF移轉至 IronPDF:完整的 C# 遷移指南。` 標籤| |`Table2`|HTML `

`| |`頁面編號標籤`|`{page}` / `{total-pages}` 占位符| ### 關鍵 API 對應 |動態 PDF|IronPDF| 筆記 | |------------|---------|-------| |`文件` + `頁面`|<代碼>ChromePdfRenderer`, `
`|使用 CSS 設計風格| |`Table2`|HTML `
`|完整的 CSS 造型| |<編碼>MergeDocumentPdfDocument.Merge()HtmlConverterChromePdfRendererdocument.Draw()HtmlConverter

Hello World

"; HtmlConverter converter = new HtmlConverter(html); converter.Convert("output.pdf"); } } ``` **IronPDF 實作:** ```csharp // NuGet: Install-Package IronPdf using IronPdf; class Program { static void Main() { string html = "

Hello World

"; var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf(html); pdf.SaveAs("output.pdf"); } } ``` IronPdf 的<代碼>ChromePdfRendererMergeDocumentPDF 文件"); var textStamper = new TextStamper() { Text = "Hello from IronPDF!", FontSize = 20, VerticalAlignment = VerticalAlignment.Top }; pdf.ApplyStamp(textStamper); pdf.SaveAs("output.pdf"); } } ``` IronPdf 的 `TextStamper` 提供基於對齊的定位而非基於座標的放置,使佈局在不同的頁面大小中更具適應性。 如需更多選項,請參閱 [ 水印和戳記文件](https://ironpdf.com/how-to/background-foreground/)。 ### 完整的文件生成範例 這個綜合範例展示了將具有多種元素的動態 PDF文件轉換為IronPDF的 HTML 方式。 **DynamicPDF 實作:** ```csharp using ceTe.DynamicPDF; using ceTe.DynamicPDF.PageElements; using ceTe.DynamicPDF.Merger; // Generation (requires Generator license) Document document = new Document(); Page page = new Page(PageSize.A4); Label title = new Label("Invoice Report", 0, 0, 595, 30, Font.HelveticaBold, 18); title.Align = TextAlign.Center; page.Elements.Add(title); Table2 table = new Table2(40, 60, 515, 500); // ... complex table setup with columns, rows, cells... page.Elements.Add(table); document.Pages.Add(page); document.Draw("invoice.pdf"); // Merging (requires Merger license) MergeDocument mergeDoc = new MergeDocument("cover.pdf"); mergeDoc.Append("invoice.pdf"); mergeDoc.Draw("final.pdf"); ``` **IronPDF 實作:** ```csharp using IronPdf; var renderer = new ChromePdfRenderer(); // All features in one library var html = @"

Invoice Report

ProductQtyPrice
Widget10$99.99
"; var invoice = renderer.RenderHtmlAsPdf(html); // Merging included - no separate license var cover = PdfDocument.FromFile("cover.pdf"); var final = PdfDocument.Merge(cover, invoice); final.SaveAs("final.pdf"); ``` ## 關鍵遷移注意事項 ### 基於座標的 HTML/CSS 定位 基本模式的轉換需要將 X,Y 座標定位轉換為基於 CSS 的佈局: ```csharp //動態 PDF- coordinate-based var label = new Label("Hello World", 100, 200, 300, 50); //IronPDF- CSS positioning (if absolute positioning needed) var html = "
Hello World
"; //IronPDF- preferred approach (flow-based) var html = "
Hello World
"; ``` ### 頁面編號語法 DynamicPDF 和IronPDF使用不同的頁碼占位符語法: ```csharp //動態 PDFplaceholders "Page %%CP%% of %%TP%%" //IronPDFplaceholders "Page {page} of {total-pages}" ``` ### 頁首和頁尾 將動態 PDF`Template` 元件轉換為IronPDF`HtmlHeaderFooter` 元件: ```csharp //IronPDFheader/footer renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter() { HtmlFragment = "
Page {page} of {total-pages}
", MaxHeight = 25 }; ``` 如需更多標頭/頁尾選項,請參閱 [ 標頭和頁尾文件](https://ironpdf.com/how-to/headers-and-footers/)。 ### 安全設定 ```csharp //IronPDFsecurity pdf.SecuritySettings.OwnerPassword = "ownerPassword"; pdf.SecuritySettings.UserPassword = "userPassword"; ``` 如需全面的安全選項,請參閱 [加密說明文件](https://ironpdf.com/how-to/pdf-encryption-and-decryption/)。 ## 遷移後檢查清單 完成程式碼遷移後,請驗證下列事項: - [ ] 生成的 PDF 的視覺比較 - [ ] 確認文字的定位和排版 - [ ] 測試表格渲染和溢出 - [驗證所有頁面上的頁首/頁腳 - [ ] 測試表格填寫功能 - [ ] 驗證安全性/加密性 - [ ] 效能基準 - [ ] 移除未使用的動態 PDF授權檔案 - [ ] 更新文件 ## Future-Proofing Your PDF Infrastructure 由於 .NET 10 即將面世,而 C# 14 也將引進新的語言功能,因此選擇一個能接受現代 .NET 模式的 PDF 函式庫,可確保長期的相容性。IronPDF對 .NET 6/7/8/9+ 的原生支援,為專案延伸至 2025 年和 2026 年提供了明確的發展路徑--免除了管理多個產品授權或瀏覽零散 API 的複雜性。 ## 其他資源 - [IronPDF文件](https://ironpdf.com/docs/)。 - [HTML to PDF Tutorials](https://ironpdf.com/tutorials/) - [API Reference](https://ironpdf.com/object-reference/api/) - [NuGet 套件](https://www.nuget.org/packages/IronPdf/)。 - [授權選項](https://ironpdf.com/licensing/) --- 從動態 PDF遷移到 IronPdf 可消除管理多個產品授權的複雜性,同時提供基於 Chromium 的現代化渲染和完整的 CSS3 支援。 從基於座標的定位轉換到 HTML/CSS 設計,通常會產生更易維護的程式碼,並利用熟悉的網頁技術。
Curtis Chau
技術作家

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

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

相關文章