IRONSOFTWAREHOME
影片

如何在 C# | IronPDF 中使用資料 URI 嵌入圖片

Curtis Chau
Curtis Chau
Updated: 2026年7月19日

Telerik Reporting是一個強大的企業級報告平台,對於.NET開發者來說,能夠使用視覺設計器和下鑽功能構建互動報告非常有用。 然而,對於那些主要需求是PDF生成而非全面報告基礎設施的團隊來說,Telerik Reporting在許可費用、部署複雜度和執行負載方面往往代表著顯著的超負荷。

該指南為專業.NET開發者評估從Telerik Reporting轉移到IronPDF提供了一個完整的遷移路徑,附有詳細說明、程式碼比較和實用範例。

為什麼要從Telerik Reporting遷移

從Telerik Reporting遷移的決定通常集中在讓您的工具與實際需求相匹配的問題上。 開發團隊考慮遷移的主要原因包括:

**每位開發者的許可費:**獨立的Telerik Reporting每位開發者起價約為$685,DevCraft Complete大包每位開發者起價約為$1,763 (2026 Q1, ComponentSource)。 兩者都以永久 + 1年維護或年度訂閱的形式出售。 對於只需要PDF生成的團隊來說,這代表著許多未使用的功能。

**報告設計器依賴:**Telerik Reporting需要獨立、Web或Visual Studio整合的設計師以及從專用的Telerik NuGet來源提取的運行時程式集 (https://nuget.telerik.com/v3/index.json,需要許可金鑰)。 這增加了開發環境和CI/CD管道的複雜性。

**複雜的基礎設施:**對於HTML5查看器場景,還需要託管一個Reporting REST服務(Telerik.Reporting.Services.AspNetCore),包括儲存、解決器和查看器腳本配置—這種基礎設施對於簡單的PDF生成任務增加了維護負擔。

專有格式:.trdxXML報告定義(Telerik自己的格式—不支持RDL/RDLC)將您鎖定在Telerik生態系統中。 遷移或修改模板需要Telerik工具。

**沉重的運行時:**在可能只是簡單的HTML到PDF轉換的情況下,部署佔用大,此外還有供DOCX/XLSX/PPTX/XPS用的可選渲染DLL。

**可更新的維護:**即使擁有永久許可,每次更新、修復和支持仍然需要更新維護訂閱。

當Telerik Reporting過於強大時

如果您主要使用Telerik Reporting從資料生成PDF,您可能會為不使用的功能支付費用:

您需要Telerik提供 (未使用)
從HTML生成PDF視覺設計器,下鑽功能
簡單報告互動查看器,導出功能
伺服器端PDF桌面控件,圖表引擎

IronPDF提供專注於PDF生成而無企業報告負擔的解決方案。

IronPDF與Telerik Reporting:功能比較

了解結構差異有助於技術決策者評估遷移投資:

功能Telerik ReportingIronPDF
重點報告建立與PDF導出選項從HTML進行全面的PDF生成
整合與ASP.NET Core應用無縫整合可以整合到任何.NET應用程式中
設置複雜性需要安裝報告設計器簡單的NuGet安裝
定價DevCraft商用套件的一部分分開許可,對獨立的PDF生成成本更有效
PDF 生成限於報告導出齊全的功能和高級PDF操作
目標受眾需要以報告為中心解決方案的開發者需要靈活PDF生成解決方案的開發者
模板格式.trdp / .trdx (XML; 不支持RDL/RDLC)HTML/CSS/Razor
學習曲線Telerik專用(表達語言,區段)標準的網頁技術
HTML 到 PDF伺服器端通過HtmlTextBox(有限的HTML/CSS)完整的Chromium渲染
URL至PDF不內建(自己抓取HTML)
CSS 支援有限(設計器中的類CSS選擇器)完整支持 CSS3
渲染時的JavaScript不(伺服器引擎不執行JavaScript)完整的ES2024
數位簽名是的(X.509 / .PFX 方法通過PDF裝置資訊)
PDF/APDF/A-1b, PDF/A-2b, PDF/A-3bPDF/A-3
運行時大小大(引擎 + 每格式渲染DLL)

快速開始:從Telerik Reporting到IronPDF的遷移

可以立即透過這些基本步驟開始遷移。

步驟 1:替換 NuGet 套件

移除所有Telerik Reporting包:

# Remove Telerik Reporting packages (hosted on the private Telerik NuGet feed)
dotnet remove package Telerik.Reporting
dotnet remove package Telerik.Reporting.Services.AspNetCore
dotnet remove package Telerik.ReportViewer.Mvc
SHELL

安裝 IronPDF:

# InstallIronPDF(hosted on nuget.org)
dotnet add package IronPdf
SHELL

步驟 2:更新命名空間

將Telerik命名空間替換為IronPDF命名空間:

// Before (Telerik Reporting)
using Telerik.Reporting;
using Telerik.Reporting.Processing;
using Telerik.Reporting.Drawing;

// After (IronPDF)
using IronPdf;

步驟 3:初始化授權

在應用啓動時新增授權初始化:

IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

程式碼遷移範例

將HTML轉換為PDF

最常見的用例展示了這些.NET PDF庫之間架構上的差異。

Telerik Reporting方法:

// NuGet: Install-Package Telerik.Reporting
using Telerik.Reporting;
using Telerik.Reporting.Processing;
using System.Collections.Specialized;

class TelerikExample
{
    static void Main()
    {
        var reportSource = new Telerik.Reporting.TypeReportSource();
        var instanceReportSource = new Telerik.Reporting.InstanceReportSource();
        instanceReportSource.ReportDocument = new Telerik.Reporting.Report()
        {
            Items = { new Telerik.Reporting.HtmlTextBox() { Value = "<h1>Hello World</h1><p>Sample HTML content</p>" } }
        };
        
        var reportProcessor = new ReportProcessor();
        var result = reportProcessor.RenderReport("PDF", instanceReportSource, null);
        
        using (var fs = new System.IO.FileStream("output.pdf", System.IO.FileMode.Create))
        {
            fs.Write(result.DocumentBytes, 0, result.DocumentBytes.Length);
        }
    }
}

IronPDF 方法:

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class IronPdfExample
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>Sample HTML content</p>");
        pdf.SaveAs("output.pdf");
    }
}

Telerik版本需要建立ReportProcessor,和手動檔流管理。 IronPDF的ChromePdfRenderer用三行程式碼處理整個過程。

如需進階 HTML 到 PDF 的場景,請參見 HTML 到 PDF 轉換指南

將 URL 轉換為 PDF

URL到PDF的轉換揭示了Telerik Reporting的重大功能差距。

Telerik Reporting方法:

// NuGet: Install-Package Telerik.Reporting
using Telerik.Reporting;
using Telerik.Reporting.Processing;
using System.Net;

class TelerikExample
{
    static void Main()
    {
        string htmlContent;
        using (var client = new WebClient())
        {
            htmlContent = client.DownloadString("https://example.com");
        }
        
        var report = new Telerik.Reporting.Report();
        var htmlTextBox = new Telerik.Reporting.HtmlTextBox()
        {
            Value = htmlContent
        };
        report.Items.Add(htmlTextBox);
        
        var instanceReportSource = new Telerik.Reporting.InstanceReportSource();
        instanceReportSource.ReportDocument = report;
        
        var reportProcessor = new ReportProcessor();
        var result = reportProcessor.RenderReport("PDF", instanceReportSource, null);
        
        using (var fs = new System.IO.FileStream("webpage.pdf", System.IO.FileMode.Create))
        {
            fs.Write(result.DocumentBytes, 0, result.DocumentBytes.Length);
        }
    }
}

IronPDF 方法:

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class IronPdfExample
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://example.com");
        pdf.SaveAs("webpage.pdf");
    }
}

Telerik Reporting沒有內建的URL到PDF的方法—您自己抓取HTML(這裡通過WebClient),伺服器端引擎不執行JavaScript,因此外部腳本和動態內容不呈現。 IronPDF的RenderUrlAsPdf方法準確捕捉完整的渲染頁面,就像它在瀏覽器中出現一樣。

查看 URL 到 PDF 文件,了解認證和自定義標頭選項。

實現具有頁碼的頁眉和頁腳

具有動態頁碼的頁眉和頁腳是專業文件的關鍵部分。 實施方法明顯不同。

Telerik Reporting方法:

// NuGet: Install-Package Telerik.Reporting
using Telerik.Reporting;
using Telerik.Reporting.Processing;
using Telerik.Reporting.Drawing;

class TelerikExample
{
    static void Main()
    {
        var report = new Telerik.Reporting.Report();
        
        // Add page header
        var pageHeader = new Telerik.Reporting.PageHeaderSection();
        pageHeader.Height = new Unit(0.5, UnitType.Inch);
        pageHeader.Items.Add(new Telerik.Reporting.TextBox()
        {
            Value = "Document Header",
            Location = new PointU(0, 0),
            Size = new SizeU(new Unit(6, UnitType.Inch), new Unit(0.3, UnitType.Inch))
        });
        report.PageHeaderSection = pageHeader;
        
        // Add page footer
        var pageFooter = new Telerik.Reporting.PageFooterSection();
        pageFooter.Height = new Unit(0.5, UnitType.Inch);
        pageFooter.Items.Add(new Telerik.Reporting.TextBox()
        {
            Value = "Page {PageNumber} of {PageCount}",
            Location = new PointU(0, 0),
            Size = new SizeU(new Unit(6, UnitType.Inch), new Unit(0.3, UnitType.Inch))
        });
        report.PageFooterSection = pageFooter;
        
        // Add content
        var htmlTextBox = new Telerik.Reporting.HtmlTextBox()
        {
            Value = "<h1>Report Content</h1><p>This is the main content.</p>"
        };
        report.Items.Add(htmlTextBox);
        
        var instanceReportSource = new Telerik.Reporting.InstanceReportSource();
        instanceReportSource.ReportDocument = report;
        
        var reportProcessor = new ReportProcessor();
        var result = reportProcessor.RenderReport("PDF", instanceReportSource, null);
        
        using (var fs = new System.IO.FileStream("report_with_headers.pdf", System.IO.FileMode.Create))
        {
            fs.Write(result.DocumentBytes, 0, result.DocumentBytes.Length);
        }
    }
}

IronPDF 方法:

// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
using System;

class IronPdfExample
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        
        // Configure header and footer
        renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
        {
            HtmlFragment = "<div style='text-align:center'>Document Header</div>"
        };
        
        renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
        {
            HtmlFragment = "<div style='text-align:center'>Page {page} of {total-pages}</div>"
        };
        
        var pdf = renderer.RenderHtmlAsPdf("<h1>Report Content</h1><p>This is the main content.</p>");
        pdf.SaveAs("report_with_headers.pdf");
    }
}

Telerik Reporting需要建立TextBox項目。 IronPDF的基於HTML的方法使用熟悉的CSS樣式及簡單的占位符,如{total-pages}

瞭解更多關於頁眉和頁腳選項的內容,請參閱頁眉和頁腳文件

Telerik Reporting API到IronPDF對照表

此映射透過展示直接的 API 等價加速遷移:

Telerik ReportingIronPDF
ReportChromePdfRenderer
ReportProcessorrenderer.RenderHtmlAsPdf()
ReportSourceHTML字串或文件
.trdp / .trdx 文件HTML/CSS模板
ReportParameter字串插值 / Razor
ReportDataSourceC#資料綁定
RenderReport("PDF")RenderHtmlAsPdf()
Export()pdf.SaveAs()
TextBox 報告項目HTML <span>, <p>, <div>
Table 報告項目HTML <table>
PictureBoxHTML <img>
PageSettingsRenderingOptions

常見遷移問題及解決方案

問題1:報告定義(.trdp/.trdx文件)

Telerik Reporting使用專有的XML報告定義,無法直接轉換。

**解決方案:**通過打開設計器中的報告,記錄佈局、資料綁定和格式設置,然後重新建立為HTML/CSS模板進行轉換。 在複雜的方案中使用Razor進行資料綁定。

問題2:資料來源綁定

Telerik Reporting使用SqlDataSource和物件資料來源進行表達式綁定。

**解決方案:**在C#中獲取資料並綁定到HTML上:

var data = await dbContext.Orders.ToListAsync();
var html = $"<table>{string.Join("", data.Select(d => $"<tr><td>{d.Name}</td></tr>"))}</table>";

問題3:報告參數

Telerik Reporting使用ReportParameter與內建參數UI。

**解決方案:**將參數直接傳遞至HTML生成:

public string GenerateReport(string customerId, DateTime fromDate)
{
    return $"<h1>Report for {customerId}</h1><p>From: {fromDate:d}</p>";
}

問題4:互動特性

Telerik Reporting在查看器中提供下鑽、排序和篩選。

**解決方案:**IronPDF生成靜態PDF。 對於互動性,將資料保留在您的網頁UI中,當使用者點擊"導出"時生成PDF。這將互動資料探索與文件生成分開考慮。

Telerik Reporting遷移清單

遷移前任務

審計您的程式碼庫以識別所有Telerik Reporting使用情況:

grep -r "using Telerik.Reporting" --include="*.cs" .
grep -r "Report\|ReportProcessor" --include="*.cs" .
SHELL

記錄資料來源和參數,截圖當前報告佈局作為視覺參考,並識別可以轉換為可重用HTML模板的共享報告組件。

程式碼更新任務

  1. 移除Telerik NuGet包
  2. 安裝IronPDFNuGet 套件
  3. .trdx文件轉換為HTML模板
  4. ChromePdfRenderer
  5. 更新資料綁定為字串插值或Razor
  6. 使用HtmlHeaderFooter將頁眉/頁腳轉換為HTML
  7. 在啟動時新增許可初始化

遷移後測試

遷移後,驗證以下方面:

  • 對比PDF輸出與原始報告作視覺比較
  • 驗證生成PDF中的資料準確性
  • 測試多頁文件的分頁
  • 檢查頁眉/頁腳在所有頁面上正確顯示
  • 進行高負載場景的性能測試

遷移到IronPDF的關鍵好處

從Telerik Reporting轉移到IronPDF為專注於PDF生成的團隊提供了若干優勢:

**現代Chromium渲染引擎:**IronPDF使用與Google Chrome相同的渲染引擎,確保PDF與現代瀏覽器中顯示的內容一致。 完整的CSS3和JavaScript支持意味著您的網頁設計可以直接轉化為PDF。

**簡化的許可:**IronPDF提供每位開發者許可,而不需要購買全面的套件。 對於只需PDF生成的團隊來說,這代表著顯著的成本節省。

**標準的網頁技術:**HTML、CSS和JavaScript是每位網頁開發者都具備的技能。 無需學習專有模板格式或特殊設計工具。

**更小的部署佔用:**沒有報告服務基礎設施和設計器組件,部署更簡單和更快。

**積極的開發:**IronPDF的定期更新與當前的.NET版本保持一致,因此現代.NET上的項目在支援方面無需等待季度報告更新。

請注意: Telerik是其各自所有者的註冊商標。 本網站未與Progress Software關聯、未被其支持或贊助。 所有產品名稱、標誌和品牌均為其各自所有者的財產。 比較僅供參考,反映撰寫時公開可用的資訊。
Curtis Chau
技術作家

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

...
閱讀更多

相關文章

Key in blue circle

立即免費取得 30 天試用金鑰

Your trial license will be sent to your email address

無任何限制。100% 解鎖。無需信用卡。

bullet_checked無需信用卡或建立帳號無任何限制。100% 解鎖。無需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
預訂您的免費現場演示
Booking Badge

受到全球數百萬工程師的信任

Iron Software的客戶標誌
獲取您的無義務諮詢
填寫以下表格或電子郵件sales@ironsoftware.com
您的詳細資訊將始終保密
受到全球數百萬工程師的信任
Iron Software的客戶標誌
立即獲取您的30天試用金鑰
無需信用卡或帳戶建立