跳過到頁腳內容
遷移指南

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

從快速報告轉移到 IronPDF:完整的 C# 遷移指南。

FastReport.NET 是專為 .NET 生態系統打造的功能強大的報表解決方案,具有可視化報表設計器和基於頻帶的架構,可用於建立複雜的資料驅動報表。 然而,FastReport 為現代 PDF 生成工作流程帶來了重大挑戰:對報表設計師的依賴限制了代碼至上的開發、圍繞基於帶的概念(DataBand、PageHeaderBand)的陡峭學習曲線、使用專有格式的有限 CSS 支援、使用 RegisterData() 模板的複雜資料綁定,以及需要多次安裝的零散 NuGet 套件。 這份全面的指南提供了從快速報告到IronPDF的逐步遷移路徑 -IronPDF是一個通用的 PDF 函式庫,利用 HTML/CSS 網路技術進行彈性、程式化的文件產生。

為什麼要從快速報告轉移到 IronPDF? FastReport.NET 在報表方面的專精,為需要多功能 PDF 生成的開發團隊製造了摩擦。 瞭解這些架構上的差異對於規劃您的遷移是非常重要的。 ###快速報告的挑戰 1.**依賴報表設計師**:建立複雜的佈局需要視覺設計師或深厚的 .frx 檔案結構知識-不適合程式碼先導的開發方式。 2.**陡峭的學習曲線**:FastReport 基於段落的架構 (DataBand、PageHeaderBand、PageFooterBand),需要瞭解特定於報表的概念,這些概念無法轉移到其他技術。 3.**有限的 CSS 支援**:不支援 Web 標準樣式; 造型是透過快速報告的專屬格式而非熟悉的 CSS 來完成。 4.**複雜資料綁定**:RegisterData() 和 DataSource 連線為簡單的 PDF 產生情境增加了模板。 5.**Fragmented Packages**:完整功能需要多個 NuGet 套件(FastReport.OpenSource、FastReport.OpenSource.Export.PdfSimple 等)。 6.**授權複雜性**:開放原始碼版本功能有限; PDF 加密、數位簽署和字型嵌入需要商業版本。 ### 架構比較 |範疇|快速報告|IronPDF| |--------|------------|---------| |**設計方法**|視覺設計師 + .frx 檔案|HTML/CSS (網頁技術)| |**學習曲線**|陡峭(基於波段的概念)|溫和 (HTML/CSS 知識)| |**資料綁定**|RegisterData(), DataBand|字串插值、Razor、樣板化| |**CSS 支援**|限額|完整的 CSS3 與 Flexbox/Grid| |**套件模式**|多種套件|單一套件(所有功能)| |**渲染引擎**|自訂|最新的 Chromium| |**PDF 操作**|以出口為重點|完整(合併、分割、安全性、表單)| |**現代 .NET**|.NET Standard 2.0|.NET 6/7/8/9+ 原生| ### 主要遷移優勢 1.**Web 技術**:使用熟悉的 HTML/CSS 而非專屬的帶式佈局 2.**程式碼第一開發**:不依賴視覺設計師,以程式化方式產生 PDF 3.**單一套件**:一個 NuGet 套件包含所有 PDF 功能 4.**現代化渲染**:最新的 Chromium 引擎可提供像素完美的 CSS3 輸出 5.**完整的 PDF 操作**:合併、分割、安全性、表單 - 不只是匯出 ## 遷移前的準備工作 ### 先決條件 確保您的環境符合這些要求: - .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/) 網站免費試用) ### 審核快速報告使用情況 在您的解決方案目錄中執行這些指令,以辨識所有的快速報告參考資料: ```bash # Find all快速報告references grep -r "FastReport\|\.frx\|PDFExport\|PDFSimpleExport\|DataBand\|RegisterData" --include="*.cs" --include="*.csproj" . # Check NuGet packages dotnet list package | grep FastReport ``` ### 記錄您的報告範本 在轉換之前,先將所有 `.frx` 檔案及其用途編成目錄: - 報告名稱與目的 - 使用的資料來源 - 頁頭/頁腳設定 - 頁數要求 - 特殊格式或造型 ### 瞭解範式轉移 從快速報告轉換到IronPDF時,最顯著的改變是基本的設計方法。快速報告使用 `.frx` 範本檔案與 DataBand、PageHeaderBand 和 RegisterData() 等專屬概念,進行以 band 為基礎的視覺設計。 IronPdf 使用的是大多數開發人員都已熟知的 HTML/CSS 網頁技術。 這意味著將快速報告頻段組態轉換為 HTML 模板,透過字串插值或 Razor 模板以直接資料綁定取代 RegisterData(),並將 PageHeaderBand/PageFooterBand 轉換為基於 HTML 的頁首和頁尾。 ## 逐步遷移的過程 ### 步驟 1:更新 NuGet 套件 移除所有快速報告套件並安裝 IronPdf: ```bash # Remove all快速報告packages dotnet remove package FastReport.OpenSource dotnet remove package FastReport.OpenSource.Export.PdfSimple dotnet remove package FastReport.OpenSource.Web dotnet remove package FastReport.OpenSource.Data.MsSql # InstallIronPDF(includes all features) dotnet add package IronPdf ``` ### 步驟 2:更新命名空間參考資料 用IronPDF取代快速報告命名空間: ```csharp // Remove these using FastReport; using FastReport.Export.PdfSimple; using System.IO; // Add this using IronPdf; ``` ### 步驟 3:配置授權 ```csharp // Add at application startup (Program.cs or Startup.cs) IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"; ``` ## 完整的 API 遷移參考。 ### 核心類映射 |FastReport 類別|IronPdf 同等級產品| 筆記 | |-----------------|-------------------|-------| |`報告`|<代碼>ChromePdfRendererPDFExportChromePdfRenderer` 或 `
`|頁面內容| |`文字物件`|HTML `

`, ``, `

`|文字元素| |<編碼>HTMLObjectHtmlHeaderFooterHtmlHeaderFooterreport.Prepare()pdf.SaveAs(路徑)[TotalPages]

Hello World

This is a test PDF

"; // Prepare report report.Prepare(); // Export to PDF PDFSimpleExport pdfExport = new PDFSimpleExport(); using (FileStream fs = new FileStream("output.pdf", FileMode.Create)) { report.Export(pdfExport, fs); } } } } ``` **IronPDF 實作:** ```csharp // NuGet: Install-Package IronPdf using IronPdf; class Program { static void Main() { var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf("

Hello World

This is a test PDF

"); pdf.SaveAs("output.pdf"); } } ``` FastReport 需要建立一個 Report 物件、一個具有固定尺寸的 HTMLObject、準備報表,以及透過 stream 匯出--七行包含 using 語句的程式碼。IronPDF可在三行內透過直接 HTML 渲染達成相同的結果。 如需更多選項,請參閱 [HTML to PDF 文件](https://ironpdf.com/how-to/html-file-to-pdf/)。 ### URL 轉 PDF 本範例強調快速報告需要手動下載 HTML,而IronPDF則可原生處理 URL 渲染。 **FastReport 實作:** ```csharp // NuGet: Install-Package FastReport.OpenSource using FastReport; using FastReport.Export.PdfSimple; using System.IO; using System.Net; class Program { static void Main() { // DownloadHTML 內容from URL string htmlContent; using (WebClient client = new WebClient()) { htmlContent = client.DownloadString("https://example.com"); } using (Report report = new Report()) { FastReport.HTMLObject htmlObject = new FastReport.HTMLObject(); htmlObject.Width = 800; htmlObject.Height = 600; htmlObject.Text = htmlContent; report.Prepare(); PDFSimpleExport pdfExport = new PDFSimpleExport(); using (FileStream fs = new FileStream("webpage.pdf", FileMode.Create)) { report.Export(pdfExport, fs); } } } } ``` **IronPDF 實作:** ```csharp // NuGet: Install-Package IronPdf using IronPdf; class Program { static void Main() { var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderUrlAsPdf("https://example.com"); pdf.SaveAs("webpage.pdf"); } } ``` FastReport 需要使用 WebClient 手動下載 HTML 內容,然後將其嵌入具有固定尺寸的 HTMLObject 中 - 這是一種無法正確處理 JavaScript 執行或相對資源 URL 的解決方案。IronPDF的 `RenderUrlAsPdf` 使用 Chromium 引擎直接渲染具有完整 JavaScript 執行功能的即時網頁。如需更多選項,請參閱 [URL to PDF 文件](https://ironpdf.com/how-to/url-to-pdf/)。 ### 帶有頁碼的頁首和頁尾 本範例展示了快速報告基於波段的系統與IronPDF基於 HTML 的方法之間的複雜性差異。 **FastReport 實作:** ```csharp // NuGet: Install-Package FastReport.OpenSource using FastReport; using FastReport.Export.PdfSimple; using System.IO; class Program { static void Main() { using (Report report = new Report()) { report.Load("template.frx"); // Set report page properties FastReport.ReportPage page = report.Pages[0] as FastReport.ReportPage; // Add page header FastReport.PageHeaderBand header = new FastReport.PageHeaderBand(); header.Height = 50; FastReport.TextObject headerText = new FastReport.TextObject(); headerText.Text = "Document Header"; header.Objects.Add(headerText); page.Bands.Add(header); // Add page footer FastReport.PageFooterBand footer = new FastReport.PageFooterBand(); footer.Height = 50; FastReport.TextObject footerText = new FastReport.TextObject(); footerText.Text = "Page [Page]"; footer.Objects.Add(footerText); page.Bands.Add(footer); report.Prepare(); PDFSimpleExport pdfExport = new PDFSimpleExport(); using (FileStream fs = new FileStream("report.pdf", FileMode.Create)) { report.Export(pdfExport, fs); } } } } ``` **IronPDF 實作:** ```csharp // NuGet: Install-Package IronPdf using IronPdf; class Program { static void Main() { var renderer = new ChromePdfRenderer(); // Configure header and footer renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter() { HtmlFragment = "
Document Header
" }; renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter() { HtmlFragment = "
Page {page} of {total-pages}
" }; var pdf = renderer.RenderHtmlAsPdf("

Report Content

This is the main content.

"); pdf.SaveAs("report.pdf"); } } ``` FastReport 需要載入範本檔案、鑄造頁面物件、建立波段物件、設定高度、建立文字物件、加入波段集合,以及將波段加入頁面。 IronPdf 使用<編碼>HtmlHeaderFooter[TotalPages]{item.Name}{item.Value}"); } var pdf = renderer.RenderHtmlAsPdf(html.ToString()); ``` ### 安全設定 ```csharp //IronPDFsecurity var pdf = renderer.RenderHtmlAsPdf(html); pdf.SecuritySettings.UserPassword = "password"; pdf.SecuritySettings.OwnerPassword = "ownerPassword"; pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights; ``` 如需全面的安全選項,請參閱 [加密說明文件](https://ironpdf.com/how-to/pdf-encryption-and-decryption/)。 ## 遷移後檢查清單 完成程式碼遷移後,請驗證下列事項: - [ ] 生成的 PDF 的視覺比較 - [ ] 確認頁首/頁腳和頁碼 - [ ] 使用生產資料量進行測試 - [驗證安全性/加密功能 - [ ] 效能基準 - [ ] 移除未使用的 .frx 模板檔案 - [刪除與快速報告相關的程式碼 - [ ] 更新文件 ## Future-Proofing Your PDF Infrastructure 由於 .NET 10 即將面世,而 C# 14 也將引進新的語言功能,因此選擇一個能接受現代網路技術的 PDF 函式庫,可確保長期的可維護性。 IronPdf 的 HTML/CSS 方法意味著您的模板可以利用整個 Web 開發中使用的相同技能 - 沒有無法轉換到其他技術的專有帶式概念。 隨著專案延伸至 2025 年和 2026 年,使用具有 CSS3 功能(如 Flexbox 和 Grid)的標準 HTML 模板的能力提供了設計靈活性,這是快速報告的專屬格式所無法比擬的。 ## 其他資源 - [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/) --- 從快速報告轉換到 IronPDF,可以消除視覺設計師的依賴性、帶狀學習曲線和分散的套件模型。 過渡到以 HTML/CSS 為基礎的 PDF 產生,利用熟悉的網頁技術,同時在單一套件中提供完整的 PDF 操作功能 - 合併、分割、安全性和表單。
Curtis Chau
技術作家

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

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

相關文章