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

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

jsreportからIronPDFへの移行:完全なC#移行ガイド

jsreportからIronPDFへの移行は、あなたの.NET PDFワークフローを、外部バイナリ管理と個別のサーバープロセスによるNode.js依存のシステムから、完全にプロセス内で実行される純粋な.NETライブラリへと変えます。 このガイドでは、.NETのプロフェッショナルな開発者向けに、インフラの複雑さやJavaScriptのテンプレート要件を排除する包括的な移行パスを、ステップバイステップで提供します。

なぜjsreportからIronPDFに移行するのか

jsreportの課題

jsreportは、純粋な.NET環境にはない複雑さをもたらします:

1.Node.jsの依存性:Node.jsのランタイムとバイナリを必要とし、単純な.NETアプリケーションであるべきものにインフラの複雑さを加えます。

2.外部バイナリ管理:個別のNuGetパッケージ(jsreport.Binaryjsreport.Binary.Linuxjsreport.Binary.OSX)を通じて、Windows、Linux、およびOSX用のプラットフォーム固有のバイナリをダウンロードして管理する必要があります。

3.分離サーバープロセス:ユーティリティまたは Web サーバーとして実行され、StartAsync() および KillAsync() ライフサイクル メソッドによる追加のプロセス管理が必要です。

4.JavaScriptテンプレート:C#ネイティブの機能を使用する代わりに、Handlebars、JsRender、または他のJavaScriptテンプレートシステムを強制的に学習させます。

5.複雑なリクエスト構造:単純な PDF 生成でさえ、ネストされた<コード>テンプレート</コード構成を持つ冗長な<コード>RenderRequest</コードオブジェクトを必要とします。

6.ライセンス制限:無料版ではテンプレート数に制限があります; スケーリングには商用ライセンスが必要です。

7.ストリームベース出力:手動でのファイル操作とメモリ・ストリーム管理を必要とするストリームを返します。

jsreportとIronPDFの比較

フィーチャーjsreportIronPDF
ランタイムNode.js + .NET純粋な.NET
バイナリ管理マニュアル(jsreport.Binaryパッケージ)自動翻訳
サーバープロセス必須(ユーティリティまたはウェブサーバ)進行中
テンプレート作成JavaScript(ハンドルバーなど)C# (Razor、文字列補間)
APIスタイル冗長なリクエストオブジェクトクリーンで流暢なメソッド
アウトプットストリームPdfDocument オブジェクト
PDF操作制限的広範囲(マージ、分割、編集)
非同期サポート非同期のみ同期と非同期の両方

2025年、2026年まで.NET 10とC# 14の採用を計画しているチームにとって、IronPDFは外部ランタイムに依存しない.NETネイティブライブラリとして将来を見据えた基盤を提供します。


マイグレーションの複雑さの評価

機能別の見積もり作業

フィーチャー移行の複雑さノート
HTMLからPDFへ低レベルメソッドの直接置換
URLからPDFへ低レベル直接的な方法、回避策なし
ヘッダー/フッター低レベルプレースホルダーの構文変更
ページ設定低レベルプロパティのマッピング
サーバーライフサイクル低レベル完全に削除
バイナリ管理低レベル完全に削除

パラダイムシフト

このjsreportの移行における基本的なシフトは、サーバー管理を伴う冗長なリクエストオブジェクトからシンプルなプロセス内メソッド呼び出しへのものです:

jsreport:  LocalReporting().UseBinary().AsUtility().Create() → RenderAsync(RenderRequest) →ストリーム→ File
IronPDF:   ChromePdfRenderer → RenderHtmlAsPdf(html) → SaveAs()

始める前に

前提条件

1..NET環境: .NET Framework 4.6.2+ または .NET Core 3.1+ / .NET 5/6/7/8/9+. 2.NuGetアクセス:NuGetパッケージをインストールする能力。 3.IronPDFライセンスironPdf.comからライセンスキーを取得してください。

NuGetパッケージの変更

# Removejsreportpackages
dotnet remove package jsreport.Binary
dotnet remove package jsreport.Binary.Linux
dotnet remove package jsreport.Binary.OSX
dotnet remove package jsreport.Local
dotnet remove package jsreport.Types
dotnet remove package jsreport.Client

# Install IronPDF
dotnet add package IronPdf
# Removejsreportpackages
dotnet remove package jsreport.Binary
dotnet remove package jsreport.Binary.Linux
dotnet remove package jsreport.Binary.OSX
dotnet remove package jsreport.Local
dotnet remove package jsreport.Types
dotnet remove package jsreport.Client

# Install IronPDF
dotnet add package IronPdf
SHELL

ライセンス構成

// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

jsreportの使用法を特定する。

# Find alljsreportreferences
grep -r "using jsreport\|LocalReporting\|RenderRequest\|RenderAsync" --include="*.cs" .
grep -r "JsReportBinary\|Template\|Recipe\|Engine\." --include="*.cs" .
# Find alljsreportreferences
grep -r "using jsreport\|LocalReporting\|RenderRequest\|RenderAsync" --include="*.cs" .
grep -r "JsReportBinary\|Template\|Recipe\|Engine\." --include="*.cs" .
SHELL

完全な API リファレンス

クラスマッピング

jsreportクラスIronPDF 同等物ノート
<コード>ローカルレポート</コード<コード>ChromePdfRenderer</コードメインレンダラー
<コード>ReportingService</コード<コード>ChromePdfRenderer</コード同じクラス
<コード>RenderRequest</コードメソッドのパラメータラッパー不要
<コード>テンプレート</コードメソッドのパラメータラッパー不要
<コード>Chrome</コード<コード>レンダリングオプション</コードChrome オプション
<コード>レポート</コード<コード>PdfDocument</コード成果物
<コード>エンジン</コード(不要)テンプレート用のC#。

メソッドマッピング

jsreportメソッドIronPDF 同等物ノート
LocalReporting().UseBinary().AsUtility().Create()new ChromePdfRenderer().ワンライナー
rs.RenderAsync(request).renderer.RenderHtmlAsPdf(html).直接通話
rs.StartAsync().(不要)進行中
rs.KillAsync()(不要)自動クリーンアップ
report.Content.CopyTo(stream)のようにします。pdf.SaveAs(path)またはpdf.BinaryData直接アクセス

RenderRequestプロパティのマッピング

jsreportテンプレートプロパティIronPDF 同等物ノート
<コード>テンプレート.コンテンツ</コードRenderHtmlAsPdf()の最初のパラメータ直接HTML文字列
Template.Recipe = Recipe.ChromePdf.(不要)常にChromePdf
Template.Engine = Engine.None.(不要)C#テンプレートを使用する
Chrome.HeaderTemplateRenderingOptions.TextHeaderまたは HtmlHeaderHTMLヘッダー
Chrome.FooterTemplateRenderingOptions.TextFooterまたはHtmlFooterHTMLフッター
Chrome.DisplayHeaderFooter(自動)ヘッダーの自動有効化
Chrome.MarginTopRenderingOptions.MarginTop単位:ミリメートル

プレースホルダーのマッピング(ヘッダー/フッター)

jsreportプレースホルダIronPDF プレースホルダーノート
<span> class="pageNumber"></span></span><コード>{ページ}</コード現在のページ
<span> class="totalPages"></span></span><コード>{総ページ数}</コード総ページ数
{#pageNum}<//code><コード>{ページ}</コード現在のページ
{#numPages}<//code><コード>{総ページ数}</コード総ページ数
{#timestamp}<//code>{date}<//code>現在の日付

コード移行の例

例1: 基本的なHTMLからPDFへ

翻訳前 (jsreport):

// NuGet: Install-Package jsreport.Binary
// NuGet: Install-Package jsreport.Local
// NuGet: Install-Package jsreport.Types
using jsreport.Binary;
using jsreport.Local;
using jsreport.Types;
using System;
using System.IO;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        var rs = new LocalReporting()
            .UseBinary(JsReportBinary.GetBinary())
            .AsUtility()
            .Create();

        var report = await rs.RenderAsync(new RenderRequest()
        {
            Template = new Template()
            {
                Recipe = Recipe.ChromePdf,
                Engine = Engine.None,
                Content = "<h1>Hello from jsreport</h1><p>This is a PDF document.</p>"
            }
        });

        using (var fileStream = File.Create("output.pdf"))
        {
            report.Content.CopyTo(fileStream);
        }

        Console.WriteLine("PDF created successfully!");
    }
}
// NuGet: Install-Package jsreport.Binary
// NuGet: Install-Package jsreport.Local
// NuGet: Install-Package jsreport.Types
using jsreport.Binary;
using jsreport.Local;
using jsreport.Types;
using System;
using System.IO;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        var rs = new LocalReporting()
            .UseBinary(JsReportBinary.GetBinary())
            .AsUtility()
            .Create();

        var report = await rs.RenderAsync(new RenderRequest()
        {
            Template = new Template()
            {
                Recipe = Recipe.ChromePdf,
                Engine = Engine.None,
                Content = "<h1>Hello from jsreport</h1><p>This is a PDF document.</p>"
            }
        });

        using (var fileStream = File.Create("output.pdf"))
        {
            report.Content.CopyTo(fileStream);
        }

        Console.WriteLine("PDF created successfully!");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

翻訳後(IronPDF):

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

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello from IronPDF</h1><p>This is a PDF document.</p>");
        pdf.SaveAs("output.pdf");
        Console.WriteLine("PDF created successfully!");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello from IronPDF</h1><p>This is a PDF document.</p>");
        pdf.SaveAs("output.pdf");
        Console.WriteLine("PDF created successfully!");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

jsreport アプローチは、3 つの NuGet パッケージ (jsreport.Binary, jsreport.Local, jsreport.Types), 3 つの名前空間インポート、非同期のみの実行、流暢なビルダーチェーン (LocalReporting().UseBinary().AsUtility().Create())、RecipeEngineを指定するTemplateオブジェクトがネストされた冗長なRenderRequest、そしてusingブロックによるストリームからファイルへの手動コピーです。

IronPDFはこれを1つのNuGetパッケージ、1つの名前空間、3行のコード、そして同期実行に削減します。 ChromePdfRenderer.RenderHtmlAsPdf()メソッドはHTMLを直接受け入れ、シンプルなSaveAs()メソッドでPdfDocumentを返します。 その他のレンダリングオプションについては、HTML to PDF documentationを参照してください。

例2: URLからPDFへ

翻訳前 (jsreport):

// NuGet: Install-Package jsreport.Binary
// NuGet: Install-Package jsreport.Local
// NuGet: Install-Package jsreport.Types
using jsreport.Binary;
using jsreport.Local;
using jsreport.Types;
using System;
using System.IO;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        var rs = new LocalReporting()
            .UseBinary(JsReportBinary.GetBinary())
            .AsUtility()
            .Create();

        var report = await rs.RenderAsync(new RenderRequest()
        {
            Template = new Template()
            {
                Recipe = Recipe.ChromePdf,
                Engine = Engine.None,
                Content = "<html><body><script>window.location='https://example.com';</script></body></html>"
            }
        });

        using (var fileStream = File.Create("webpage.pdf"))
        {
            report.Content.CopyTo(fileStream);
        }

        Console.WriteLine("Webpage PDF created successfully!");
    }
}
// NuGet: Install-Package jsreport.Binary
// NuGet: Install-Package jsreport.Local
// NuGet: Install-Package jsreport.Types
using jsreport.Binary;
using jsreport.Local;
using jsreport.Types;
using System;
using System.IO;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        var rs = new LocalReporting()
            .UseBinary(JsReportBinary.GetBinary())
            .AsUtility()
            .Create();

        var report = await rs.RenderAsync(new RenderRequest()
        {
            Template = new Template()
            {
                Recipe = Recipe.ChromePdf,
                Engine = Engine.None,
                Content = "<html><body><script>window.location='https://example.com';</script></body></html>"
            }
        });

        using (var fileStream = File.Create("webpage.pdf"))
        {
            report.Content.CopyTo(fileStream);
        }

        Console.WriteLine("Webpage PDF created successfully!");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

翻訳後(IronPDF):

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

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://example.com");
        pdf.SaveAs("webpage.pdf");
        Console.WriteLine("Webpage PDF created successfully!");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://example.com");
        pdf.SaveAs("webpage.pdf");
        Console.WriteLine("Webpage PDF created successfully!");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

この例は、jsreportの重要な制限を強調しています。 jsreportコードは、ウェブページをキャプチャするためにHTMLコンテンツに埋め込まれたJavaScriptのリダイレクトワークアラウンド(window.location='https://example.com')を使用しなければなりません。 この間接的なアプローチは、特定のウェブサイトで失敗する可能性があり、不必要な複雑さを追加します。

IronPDFは専用のRenderUrlAsPdf()メソッドを提供し、JavaScriptの完全な実行とモダンなCSSのサポートであらゆるURLを直接レンダリングします。 回避策や埋め込みスクリプトはありません。 URLからPDFへの変換の詳細については、こちらをご覧ください。

例3: ヘッダーとフッターのあるPDF

翻訳前 (jsreport):

// NuGet: Install-Package jsreport.Binary
// NuGet: Install-Package jsreport.Local
// NuGet: Install-Package jsreport.Types
using jsreport.Binary;
using jsreport.Local;
using jsreport.Types;
using System;
using System.IO;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        var rs = new LocalReporting()
            .UseBinary(JsReportBinary.GetBinary())
            .AsUtility()
            .Create();

        var report = await rs.RenderAsync(new RenderRequest()
        {
            Template = new Template()
            {
                Recipe = Recipe.ChromePdf,
                Engine = Engine.None,
                Content = "<h1>Document with Header and Footer</h1><p>Main content goes here.</p>",
                Chrome = new Chrome()
                {
                    DisplayHeaderFooter = true,
                    HeaderTemplate = "<div style='font-size:10px; text-align:center; width:100%;'>Custom Header</div>",
                    FooterTemplate = "<div style='font-size:10px; text-align:center; width:100%;'>Page <span class='pageNumber'></span> of <span class='totalPages'></span></div>"
                }
            }
        });

        using (var fileStream = File.Create("document_with_headers.pdf"))
        {
            report.Content.CopyTo(fileStream);
        }

        Console.WriteLine("PDF with headers and footers created successfully!");
    }
}
// NuGet: Install-Package jsreport.Binary
// NuGet: Install-Package jsreport.Local
// NuGet: Install-Package jsreport.Types
using jsreport.Binary;
using jsreport.Local;
using jsreport.Types;
using System;
using System.IO;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        var rs = new LocalReporting()
            .UseBinary(JsReportBinary.GetBinary())
            .AsUtility()
            .Create();

        var report = await rs.RenderAsync(new RenderRequest()
        {
            Template = new Template()
            {
                Recipe = Recipe.ChromePdf,
                Engine = Engine.None,
                Content = "<h1>Document with Header and Footer</h1><p>Main content goes here.</p>",
                Chrome = new Chrome()
                {
                    DisplayHeaderFooter = true,
                    HeaderTemplate = "<div style='font-size:10px; text-align:center; width:100%;'>Custom Header</div>",
                    FooterTemplate = "<div style='font-size:10px; text-align:center; width:100%;'>Page <span class='pageNumber'></span> of <span class='totalPages'></span></div>"
                }
            }
        });

        using (var fileStream = File.Create("document_with_headers.pdf"))
        {
            report.Content.CopyTo(fileStream);
        }

        Console.WriteLine("PDF with headers and footers created successfully!");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

翻訳後(IronPDF):

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

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
        {
            CenterText = "Custom Header",
            FontSize = 10
        };
        renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
        {
            CenterText = "Page {page} of {total-pages}",
            FontSize = 10
        };

        var pdf = renderer.RenderHtmlAsPdf("<h1>Document with Header and Footer</h1><p>Main content goes here.</p>");
        pdf.SaveAs("document_with_headers.pdf");
        Console.WriteLine("PDF with headers and footers created successfully!");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
using System;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
        {
            CenterText = "Custom Header",
            FontSize = 10
        };
        renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
        {
            CenterText = "Page {page} of {total-pages}",
            FontSize = 10
        };

        var pdf = renderer.RenderHtmlAsPdf("<h1>Document with Header and Footer</h1><p>Main content goes here.</p>");
        pdf.SaveAs("document_with_headers.pdf");
        Console.WriteLine("PDF with headers and footers created successfully!");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

jsreportのアプローチでは、ChromeオブジェクトをTemplateに追加し、DisplayHeaderFooter = trueを設定し、特別なCSSクラスプレースホルダ(<span> class="pageNumber"></span>, <span> class="totalPages"></span>) を持つHTMLテンプレートを使用する必要があります。 ヘッダーとフッターのテンプレートには、完全なインラインスタイルが含まれている必要があります。

IronPDFはCenterTextLeftTextRightTextFontSizeの専用プロパティを持つ、よりクリーンなTextHeaderFooter構成を提供します。 ページ番号プレースホルダは、より単純な{page}{total-pages}構文を使用します。 HTMLのヘッダーオプションについては、headers and footers documentationを参照してください。


重要な移行に関する注意事項

サーバーのライフサイクル管理をなくす

jsreportは、明示的なサーバーライフサイクル管理を必要とします:

//jsreport(DELETE THIS):
var rs = new LocalReporting()
    .UseBinary(JsReportBinary.GetBinary())
    .AsUtility()
    .Create();

// Or for web server mode:
var rs = new LocalReporting()
    .UseBinary(JsReportBinary.GetBinary())
    .AsWebServer()
    .Create();

await rs.StartAsync();
// ... use rs ...
await rs.KillAsync();
//jsreport(DELETE THIS):
var rs = new LocalReporting()
    .UseBinary(JsReportBinary.GetBinary())
    .AsUtility()
    .Create();

// Or for web server mode:
var rs = new LocalReporting()
    .UseBinary(JsReportBinary.GetBinary())
    .AsWebServer()
    .Create();

await rs.StartAsync();
// ... use rs ...
await rs.KillAsync();
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

IronPDFは完全にインプロセスで実行され、サーバーの起動、プロセス管理、クリーンアップは必要ありません:

// IronPDF:
var renderer = new ChromePdfRenderer();
// Just use it—no lifecycle management needed
// IronPDF:
var renderer = new ChromePdfRenderer();
// Just use it—no lifecycle management needed
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

プラットフォーム固有のバイナリ パッケージの削除

jsreportは、ターゲットプラットフォームごとに個別のNuGetパッケージを必要とします:

# DELETE these platform-specific packages:
dotnet remove package jsreport.Binary
dotnet remove package jsreport.Binary.Linux
dotnet remove package jsreport.Binary.OSX
# DELETE these platform-specific packages:
dotnet remove package jsreport.Binary
dotnet remove package jsreport.Binary.Linux
dotnet remove package jsreport.Binary.OSX
SHELL

IronPdfは単一のNuGetパッケージを通してすべてのプラットフォーム要件を自動的に処理します。

プレースホルダ構文の更新

jsreportは、CSSのクラスベースまたは中括弧プレースホルダを使用します。 IronPDFは異なる構文を使用します:

//jsreportplaceholders:
"<span class='pageNumber'></span>"  // or {#pageNum}
"<span class='totalPages'></span>"  // or {#numPages}

//IronPDFplaceholders:
"{page}"
"{total-pages}"
"{date}"
"{html-title}"
//jsreportplaceholders:
"<span class='pageNumber'></span>"  // or {#pageNum}
"<span class='totalPages'></span>"  // or {#numPages}

//IronPDFplaceholders:
"{page}"
"{total-pages}"
"{date}"
"{html-title}"
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

C#文字列補間でハンドルバーを置き換える

jsreportは、Engine.HandlebarsでHandlebarsテンプレートをよく使用します:

//jsreportHandlebars (DELETE THIS):
Template = new Template
{
    Content = "<h1>Hello, {{name}}</h1>",
    Engine = Engine.Handlebars
},
Data = new { name = "World" }

//IronPDFwith C# string interpolation:
string name = "World";
string html = $"<h1>Hello, {name}</h1>";
var pdf = renderer.RenderHtmlAsPdf(html);
//jsreportHandlebars (DELETE THIS):
Template = new Template
{
    Content = "<h1>Hello, {{name}}</h1>",
    Engine = Engine.Handlebars
},
Data = new { name = "World" }

//IronPDFwith C# string interpolation:
string name = "World";
string html = $"<h1>Hello, {name}</h1>";
var pdf = renderer.RenderHtmlAsPdf(html);
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

ストリーム処理を簡素化する

jsreportは、手動でのコピーが必要なストリームを返します:

//jsreportstream handling (DELETE THIS):
using (var fileStream = File.Create("output.pdf"))
{
    report.Content.CopyTo(fileStream);
}

// Or for byte array:
using (var memoryStream = new MemoryStream())
{
    await report.Content.CopyToAsync(memoryStream);
    return memoryStream.ToArray();
}

//IronPDFdirect access:
pdf.SaveAs("output.pdf");
// Or:
byte[] bytes = pdf.BinaryData;
//jsreportstream handling (DELETE THIS):
using (var fileStream = File.Create("output.pdf"))
{
    report.Content.CopyTo(fileStream);
}

// Or for byte array:
using (var memoryStream = new MemoryStream())
{
    await report.Content.CopyToAsync(memoryStream);
    return memoryStream.ToArray();
}

//IronPDFdirect access:
pdf.SaveAs("output.pdf");
// Or:
byte[] bytes = pdf.BinaryData;
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

トラブルシューティング

問題 1: LocalReporting が見つかりません。

問題:コードはIronPDFに存在しないLocalReportingクラスを参照している。

解決策ChromePdfRendererに置き換えてください:

// jsreport
var rs = new LocalReporting().UseBinary().AsUtility().Create();

// IronPDF
var renderer = new ChromePdfRenderer();
// jsreport
var rs = new LocalReporting().UseBinary().AsUtility().Create();

// IronPDF
var renderer = new ChromePdfRenderer();
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

問題 2: RenderRequest が見つかりません

問題:コードはRenderRequestTemplateラッパーオブジェクトを使用しています。

解決策:HTMLを直接レンダーメソッドに渡します:

// jsreport
await rs.RenderAsync(new RenderRequest { Template = new Template { Content = html } });

// IronPDF
var pdf = renderer.RenderHtmlAsPdf(html);
// jsreport
await rs.RenderAsync(new RenderRequest { Template = new Template { Content = html } });

// IronPDF
var pdf = renderer.RenderHtmlAsPdf(html);
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

課題3:ページ番号が表示されない

問題:jsreport プレースホルダー構文 <span> class="pageNumber"></span> を使用しています。

解決策:IronPDFプレースホルダーの構文を更新しました:

//jsreportsyntax (won't work)
"Page <span class='pageNumber'></span> of <span class='totalPages'></span>"

//IronPDFsyntax
"Page {page} of {total-pages}"
//jsreportsyntax (won't work)
"Page <span class='pageNumber'></span> of <span class='totalPages'></span>"

//IronPDFsyntax
"Page {page} of {total-pages}"
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

課題4: JsReportBinaryが見つかりません

問題:コードはJsReportBinary.GetBinary()を参照しています。

解決策:IronPDFは外部バイナリを必要としません:

// DELETE thisjsreportpattern:
.UseBinary(JsReportBinary.GetBinary())

//IronPDFneeds nothing—just create the renderer:
var renderer = new ChromePdfRenderer();
// DELETE thisjsreportpattern:
.UseBinary(JsReportBinary.GetBinary())

//IronPDFneeds nothing—just create the renderer:
var renderer = new ChromePdfRenderer();
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

移行チェックリスト

移行前

  • [すべてのjsreportusing ステートメントを特定する。
  • [ ] Handlebars/JsRenderを使用したリストテンプレート(C#文字列補間への変換)
  • [現在使用しているChromeのオプション(余白、用紙サイズ)を文書化してください。)
  • [ウェブサーバーモードとユーティリティモードのチェック(どちらもインプロセスになります)
  • [ ] プラットフォーム固有のバイナリパッケージに注意 (すべて削除)
  • [IronPDF ライセンスキーの取得

パッケージの変更

  • [ ] jsreport.Binaryパッケージを削除する
  • [ ] jsreport.Binary.Linuxパッケージを削除する
  • [ ] jsreport.Binary.OSXパッケージを削除する
  • [ ] jsreport.Localパッケージを削除する
  • [ ] jsreport.Typesパッケージを削除する
  • [ ] jsreport.Clientパッケージを削除する
  • [ ] IronPdfパッケージをインストールする

コードの変更

  • [ ] 起動時にライセンスキー設定を追加する
  • [LocalReporting を<コード>ChromePdfRenderer</コードに置き換えてください。
  • [ ] RenderRequestラッパーの削除
  • [Template ラッパーの削除
  • [ ] プレースホルダーの構文を更新 (<span> class="pageNumber">{page})
  • [ハンドルバーをC#文字列補間で置き換える
  • [StartAsync() / KillAsync() 呼び出しを削除してください。
  • [ストリームコピーをBinaryDataまたはSaveAs()に置き換えてください。

テスティング

  • [すべてのPDF生成パスのテスト
  • [ヘッダー/フッターレンダリングの検証
  • [ページ番号の確認
  • [マージン間隔の検証
  • [複雑なCSS/JavaScriptページでのテスト
  • [ベンチマーク性能

移行後

  • [jsreport バイナリファイルの削除
  • [不要になった場合は、Node.jsの依存関係を削除してください。
  • [デプロイスクリプトの更新
  • [ドキュメントの更新

結論

jsreportからIronPDFに移行することで、Node.jsの依存関係、外部バイナリの管理、サーバーのライフサイクル処理の複雑さが解消されます。 冗長なRenderRequestオブジェクトから単純なメソッド呼び出しへのパラダイムシフトは、完全なPDF生成機能を維持しながら、コード量を大幅に削減します。

この移行における主な変更点は以下のとおりです: 1.ランタイム:Node.js + .NET→ Pure .NET 2.サーバープロセス:必須 → インプロセス(排除) 3.バイナリ管理:手動プラットフォームパッケージ → 自動 4.テンプレート作成:JavaScript (ハンドルバー) → C# (文字列補間) 5.APIスタイル:簡潔なリクエストオブジェクト → きれいな流暢メソッド 6.プレースホルダ<span> class="pageNumber">{page}<//code>.

IronPDFドキュメントチュートリアルAPIリファレンスをすべてご覧になり、jsreportへの移行を加速させてください。

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

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

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