フッターコンテンツにスキップ
移行ガイド

C#でTelerik ReportingからIronPDFに移行する方法

Telerik Reportingは強力なエンタープライズレポートプラットフォームであり、ビジュアルデザイナーとドリルダウン機能を備えたインタラクティブなレポートを構築するために、.NET開発者に役立ってきました。 しかし、Telerik Reportingは、包括的なレポーティングインフラストラクチャではなく、PDF生成が主なニーズであるチームにとって、ライセンスコスト、デプロイの複雑さ、ランタイムのフットプリントなどの大きなオーバーヘッドになることがよくあります。

このガイドでは、Telerik ReportingからIronPDFへの完全な移行経路を、移行を検討している.NET開発者のために、ステップバイステップの手順、コード比較、実用的な例とともに提供します。

なぜTelerik レポートから移行するのですか?

Telerik Reportingからの移行の決定は、通常、ツールを実際の要件に適合させることを中心に行われます。 開発チームが移行を検討する主な理由は次のとおりです:

高価なバンドル ライセンス:Telerik レポートには、DevCraft バンドル (開発者 1 人あたり 1,000 ドル以上) またはスタンドアロン ライセンスが必要です。 PDFの生成だけが必要なチームにとって、これは未使用の重要な機能です。

レポート デザイナーの依存関係:Telerik レポートでは、Visual Studio 拡張機能とランタイム コンポーネントをインストールする必要があります。 このため、開発環境やCI/CDパイプラインが複雑になります。

複雑なインフラストラクチャ:実稼働環境では、レポート サービスのホスティング、接続文字列、およびデータ ソースの構成が必要になる場合があります。これは、単純な PDF 生成タスクのメンテナンスの負担が増えるインフラストラクチャです。

独自の形式: .trdpおよび.trdxファイル形式を使用すると、Telerik エコシステムにロックされます。 テンプレートの移行や修正には、Telerikのツールが必要です。

実行時間が長い:単純な HTML から PDF への変換要件の場合、展開フットプリントはかなり大きくなります。

年間サブスクリプション:更新とサポートの継続的なコストが総所有コストに追加されます。

Telerikレポートが過剰な場合

Telerik Reportingを主にデータからPDFを生成するために使用している場合、未使用の機能に対して料金を支払っている可能性が高いです:

必要なもの Telerikの提供(未使用)
HTMLからPDFへ ビジュアルデザイナー、ドリルダウン
簡単なレポート インタラクティブなビューア、エクスポート
サーバーサイドPDF デスクトップコントロール、チャートエンジン

IronPdfはエンタープライズレポートオーバーヘッドのないPDF生成を提供します。

IronPDFとTelerik Reportingの比較:機能比較

アーキテクチャの違いを理解することは、技術的な意思決定者が移行への投資を評価するのに役立ちます:

フィーチャー Telerik レポート IronPDF
フォーカス PDFエクスポートオプション付きレポート作成 HTMLからの包括的なPDF生成
統合 .NET Coreアプリケーションとのシームレスな連携 あらゆる.NETアプリケーションに統合可能
セットアップの複雑さ レポートデザイナーのインストールが必要 簡単なNuGetインストール
価格について DevCraft商用スイートの一部 別ライセンス、スタンドアロンPDF生成のためのより高い費用対効果
PDFジェネレーション レポートのエクスポートに限定 高度なPDF操作のフル機能
対象読者 レポート中心のソリューションを必要とする開発者 柔軟なPDF生成ソリューションを必要とする開発者
テンプレート形式 .trdp / .trdx のようになります。 HTML/CSS/Razor
ラーニングカーブ Telerik固有 標準的なウェブ技術
HTMLからPDFへ 制限的 完全なChromiumレンダリング
URLからPDFへ なし はい
CSSサポート 制限的 完全なCSS3
JavaScript(ジャバスクリプト なし フルES2024
デジタル署名 なし はい
PDF/A なし はい
ランタイムサイズ 大規模 小規模

クイックスタートTelerik ReportingからIronPDFへの移行

これらの基本的なステップを踏めば、すぐにでも移行を開始できます。

ステップ 1: NuGet パッケージを置き換える

Telerik Reportingパッケージをすべて削除してください:

# RemoveTelerik レポートpackages
dotnet remove package Telerik.Reporting
dotnet remove package Telerik.Reporting.Services.AspNetCore
dotnet remove package Telerik.ReportViewer.Mvc
# RemoveTelerik レポートpackages
dotnet remove package Telerik.Reporting
dotnet remove package Telerik.Reporting.Services.AspNetCore
dotnet remove package Telerik.ReportViewer.Mvc
SHELL

IronPDFをインストールします:

# Install IronPDF
dotnet add package IronPdf
# Install IronPDF
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;
// Before (Telerik Reporting)
using Telerik.Reporting;
using Telerik.Reporting.Processing;
using Telerik.Reporting.Drawing;

// After (IronPDF)
using IronPdf;
$vbLabelText   $csharpLabel

ステップ 3: ライセンスの初期化

アプリケーション起動時のライセンス初期化を追加します:

IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
$vbLabelText   $csharpLabel

コード移行の例

HTML を PDF に変換する

最も一般的な使用例は、これらの.NET PDFライブラリのアーキテクチャの違いを示しています。

Telerik レポートアプローチ:

// 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);
        }
    }
}
// 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);
        }
    }
}
$vbLabelText   $csharpLabel

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");
    }
}
// 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");
    }
}
$vbLabelText   $csharpLabel

Telerikバージョンでは、TypeReportSourceInstanceReportSourceHtmlTextBoxを持つReportオブジェクト、ReportProcessor、および手動ファイルストリーム管理を作成する必要があります。 IronPDFのChromePdfRendererは3行のコードですべてのプロセスを処理します。

高度なHTMLからPDFへのシナリオについては、HTMLからPDFへの変換ガイドをご覧ください。

URLをPDFに変換する

URLからPDFへの変換は、Telerik Reportingの重要な機能ギャップを明らかにします。

Telerik レポートアプローチ:

// 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);
        }
    }
}
// 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);
        }
    }
}
$vbLabelText   $csharpLabel

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");
    }
}
// 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");
    }
}
$vbLabelText   $csharpLabel

Telerik Reportingには、ネイティブのURL-to-PDF機能はありません。 WebClient</code> を使用して HTML コンテンツを手動で取得する必要があり、その過程で外部 CSS、JavaScript の実行、動的コンテンツが失われます。 IronPDFのRenderUrlAsPdf`メソッドはレンダリングされたページをブラウザに表示されたとおりにキャプチャします。

認証とカスタムヘッダーオプションについては、URL to PDF documentationを参照してください。

ヘッダーとフッターをページ番号で実装する

プロフェッショナルな文書には、動的なページ番号を持つヘッダーとフッターが不可欠です。 実装アプローチは大きく異なります。

Telerik レポートアプローチ:

// 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);
        }
    }
}
// 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);
        }
    }
}
$vbLabelText   $csharpLabel

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");
    }
}
// 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");
    }
}
$vbLabelText   $csharpLabel

Telerik Reporting では、PageHeaderSection および PageFooterSection</code> オブジェクトの作成、<code>Unit 測定値の設定、Location および Size プロパティの設定、特定の座標を持つ TextBox アイテムの管理が必要です。 IronPdfのHTMLベースのアプローチは、使い慣れたCSSスタイリングと{page}{total-pages}のようなシンプルなプレースホルダーを使用します。

ヘッダーとフッターのオプションについては、headers and footers documentationをご覧ください。

TelerikレポートAPIからIronPDFへのマッピングリファレンス

このマッピングは、APIと同等のものを直接示すことで、移行を加速します:

Telerik レポート IronPDF ノート
レポートクラス ChromePdfRenderer` コアレンダリング
ReportProcessor(レポートプロセッサ renderer.RenderHtmlAsPdf() PDF生成
ReportSource HTML文字列またはファイル コンテンツソース
.trdp / .trdx ファイル HTML/CSSテンプレート テンプレート形式
ReportParameter(レポートパラメータ 文字列補間 / Razor パラメータ
ReportDataSource C#データバインディング データソース
RenderReport("PDF") RenderHtmlAsPdf() PDF出力
エクスポート() pdf.SaveAs() ファイルを保存
テキストボックスレポート項目 HTML <span><p><div> テキスト要素
レポート項目 HTML <テーブル><code>
PictureBox HTML <img> 画像
ページ設定 レンダリングオプション ページ構成

一般的な移行の問題と解決策

課題1: レポート定義 (.trdp/.trdx ファイル)

Telerik Reportingは、直接変換できない独自のXMLレポート定義を使用しています。

解決策:デザイナーでレポートを開き、レイアウト、データバインディング、フォーマットを文書化し、HTML/CSSテンプレートとして再作成することで、HTMLテンプレートに変換します。 複雑なシナリオでのデータバインディングに 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>";
var data = await dbContext.Orders.ToListAsync();
var html = $"<table>{string.Join("", data.Select(d => $"<tr><td>{d.Name}</td></tr>"))}</table>";
$vbLabelText   $csharpLabel

課題3:レポート・パラメータ

Telerik Reportingは、組み込みのパラメータUIを持つReportParameterを使用しています。

解決策: HTML生成に直接パラメータを渡します:

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

課題4:インタラクティブな機能

Telerik Reportingは、ビューアでドリルダウン、ソート、フィルタリングを提供します。

ソリューション: IronPDFは静的PDFを生成します。 インタラクティブ性については、ウェブUIにデータを保持し、ユーザーが "Export "をクリックしたときにPDFを生成します。これにより、インタラクティブなデータ探索と文書生成の間の懸念を分離することができます。

Telerikレポート移行のチェックリスト

マイグレーション前のタスク

コードベースを監査して、Telerik Reportingの使用法をすべて特定します:

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

データソースとパラメータを文書化し、現在のレポートレイアウトをスクリーンショットで撮影して視覚的に参照できるようにし、再利用可能なHTMLテンプレートに変換できる共有レポートコンポーネントを特定します。

コード更新タスク

1.Telerik NuGetパッケージの削除 2.IronPdf NuGetパッケージをインストールする 3..trdp/.trdxファイルをHTMLテンプレートに変換します。 4.ReportProcessorChromePdfRendererに置き換えてください。 5.文字列補間またはRazorへのデータバインディングの更新 6.HtmlHeaderFooter を使用して、ヘッダー/フッターを HTML に変換します。 7.起動時のライセンス初期化を追加

移行後のテスト

移行後、これらの点を検証してください:

  • PDF出力を元のレポートと視覚的に比較
  • 生成されたPDFのデータ精度の検証
  • 複数ページのドキュメントのページネーションのテスト
  • すべてのページでヘッダー/フッターが正しく表示されていることを確認します。
  • 大量シナリオのパフォーマンステストの実施

IronPDFに移行する主な利点

Telerik ReportingからIronPDFに移行することで、PDF生成に特化したチームにはいくつかの利点があります:

最新の Chromium レンダリング エンジン:IronPDFは Google Chrome と同じレンダリング エンジンを使用しているため、PDF は最新のブラウザーに表示されるコンテンツとまったく同じようにレンダリングされます。 CSS3とJavaScriptを完全にサポートしているため、WebデザインはPDFに直接翻訳されます。

簡素化されたライセンス:IronPDFは、包括的なスイートを購入する必要なく、開発者ごとのライセンスを提供します。 PDF生成のみを必要とするチームにとっては、大幅なコスト削減となります。

標準 Web テクノロジー: HTML、CSS、JavaScript は、すべての Web 開発者が持つスキルです。 独自のテンプレート形式や専門的なデザイナーツールを学ぶ必要はありません。

より小さい展開フットプリント:レポート サービス インフラストラクチャとデザイナー コンポーネントがないため、展開はより簡単かつ迅速になります。

積極的な開発: .NET 10 と C# 14 の採用が 2026 年まで増加するにつれて、IronPDF の定期的な更新により、現在のおよび将来の .NET バージョンとの互換性が確保されます。

カーティス・チャウ
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。