移行ガイド C#でjsreportからIronPDFに移行する方法 カーティス・チャウ 公開日:2026年1月25日 IronPDF をダウンロード NuGet ダウンロード DLL ダウンロード Windows 版 無料トライアル LLM向けのコピー LLM向けのコピー LLM 用の Markdown としてページをコピーする ChatGPTで開く このページについてChatGPTに質問する ジェミニで開く このページについてGeminiに問い合わせる Grokで開く このページについてGrokに質問する 困惑の中で開く このページについてPerplexityに問い合わせる 共有する Facebook で共有 Xでシェア(Twitter) LinkedIn で共有 URLをコピー 記事をメールで送る jsreportからIronPDFへの移行は、あなたの.NET PDFワークフローを、外部バイナリ管理と個別のサーバープロセスによるNode.js依存のシステムから、完全にプロセス内で実行される純粋な.NETライブラリへと変えます。 このガイドでは、.NETのプロフェッショナルな開発者向けに、インフラの複雑さやJavaScriptのテンプレート要件を排除する包括的な移行パスを、ステップバイステップで提供します。 なぜjsreportからIronPDFに移行するのか jsreportの課題 jsreportは、純粋な.NET環境にはない複雑さをもたらします: Node.js の依存関係: Node.js ランタイムとバイナリが必要なため、単純な .NET アプリケーションであるはずのインフラストラクチャが複雑になります。 2.外部バイナリ管理: Windows、Linux、OSX のプラットフォーム固有のバイナリを個別の NuGet パッケージ ( jsreport.Binary 、 jsreport.Binary.Linux 、 jsreport.Binary.OSX ) を通じてダウンロードおよび管理する必要があります。 3.個別のサーバー プロセス:ユーティリティまたは Web サーバーとして実行されます。StartAsync StartAsync()およびKillAsync()ライフサイクル メソッドを使用した追加のプロセス管理が必要です。 JavaScript テンプレート:ネイティブの C# 機能を使用する代わりに、Handlebars、JsRender、またはその他の JavaScript テンプレート システムを学習する必要があります。 5.複雑なリクエスト構造:単純な PDF 生成でも、ネストされたTemplate構成を持つ詳細なRenderRequestオブジェクトが必要です。 6.ライセンスの制限:無料レベルではテンプレート数が制限されます。 スケーリングには商用ライセンスが必要です。 7.ストリームベースの出力:手動のファイル操作とメモリ ストリーム管理を必要とするストリームを返します。 jsreportとIronPDFの比較 フィーチャー jsreport IronPDF ランタイム 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() 始める前に 前提条件 .NET 環境: .NET Framework 4.6.2+ または .NET Core 3.1+ / .NET 5/6/7/8/9+ NuGetアクセス: NuGetパッケージをインストールする機能 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"; $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.HeaderTemplate。 RenderingOptions.TextHeaderまたは HtmlHeader。 HTMLヘッダー Chrome.FooterTemplate。 RenderingOptions.TextFooterまたはHtmlFooter。 HTMLフッター Chrome.DisplayHeaderFooter。 (自動) ヘッダーの自動有効化 Chrome.MarginTop。 RenderingOptions.MarginTop。 単位:ミリメートル プレースホルダーのマッピング(ヘッダー/フッター) jsreportプレースホルダ IronPDF プレースホルダー ノート <span class="pageNumber"></span></span> {ページ} 現在のページ <span class="totalPages"></span></span> {総ページ数} 総ページ数 {#pageNum}</code>|{ページ}` 現在のページ {#numPages}</code>|<code>{総ページ数} 総ページ数 {#timestamp} {date} 現在の日付 コード移行の例 例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!"); } } $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!"); } } $vbLabelText $csharpLabel jsreport アプローチは、3 つの NuGet パッケージ (jsreport.Binary, jsreport.Local, jsreport.Types), 3 つの名前空間インポート、非同期のみの実行、流暢なビルダーチェーン (LocalReporting().UseBinary().AsUtility().Create())、RecipeとEngineを指定する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!"); } } $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!"); } } $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!"); } } $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!"); } } $vbLabelText $csharpLabel jsreportのアプローチでは、ChromeオブジェクトをTemplateに追加し、DisplayHeaderFooter = trueを設定し、特別なCSSクラスプレースホルダ(<span class="pageNumber"></span>, <span class="totalPages"></span>) を持つHTMLテンプレートを使用する必要があります。 ヘッダーとフッターのテンプレートには、完全なインラインスタイルが含まれている必要があります。 IronPDFはCenterText、LeftText、RightText、FontSizeの専用プロパティを持つ、よりクリーンな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(); $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 $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}" $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); $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; $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(); $vbLabelText $csharpLabel 問題 2: RenderRequest が見つかりません 問題:コードではRenderRequestおよびTemplateラッパー オブジェクトが使用されています。 解決策: 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); $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}" $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(); $vbLabelText $csharpLabel 移行チェックリスト 移行前 すべてのjsreport usingステートメントを識別する Handlebars/JsRender を使用したリスト テンプレート (C# 文字列補間に変換) 現在使用されている Chrome オプション (余白、用紙サイズ) を文書化します Web サーバーとユーティリティ モードを確認します (両方ともインプロセスになります) プラットフォーム固有のバイナリパッケージをメモする(すべて削除) IronPDFライセンスキーを取得する パッケージの変更 jsreport.Binaryパッケージを削除します jsreport.Binary.Linuxパッケージを削除します jsreport.Binary.OSXパッケージを削除します jsreport.Localパッケージを削除します jsreport.Typesパッケージを削除します jsreport.Clientパッケージを削除します IronPdfパッケージをインストールする コードの変更 起動時にライセンスキー設定を追加する -ローカルレポート`ChromePdfRendererに置き換える RenderRequestラッパーを削除する Templateラッパーを削除する プレースホルダー構文を更新(<span class="pageNumber"> →{ページ}) ハンドルバーをC#の文字列補間に置き換える StartAsync() / KillAsync()呼び出しを削除する ストリームのコピーをBinaryDataまたはSaveAs()に置き換える テスティング すべてのPDF生成パスをテストする ヘッダー/フッターのレンダリングを確認する ページ番号を確認する 余白間隔を検証する 複雑なCSS/JavaScriptページでのテスト ベンチマークパフォーマンス 移行後 jsreportバイナリファイルを削除する 不要になった場合はNode.jsの依存関係を削除します デプロイメントスクリプトを更新する ドキュメントの更新 カーティス・チャウ 今すぐエンジニアリングチームとチャット テクニカルライター Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。 関連する記事 公開日 2026年2月1日 C#でZetPDFからIronPDFに移行する方法 この完全なC#ガイドでZetPDFからIronPDFへの移行をマスターしてください。座標ベースのライブラリから最新のHTML-to-PDFソリューションに切り替えます。HTML変換、PDFのマージ、PDFSharpの依存関係の削除のコード例が含まれています。 詳しく読む 公開日 2026年2月1日 C#でScryber.CoreからIronPDFに移行する方法 この完全なC#ガイドでScryber.CoreからIronPDFへの移行をマスターしてください。カスタムXML/HTMLパースから最新のChromiumレンダラーに切り替えます。HTML変換、URLレンダリング、独自のバインディングを置き換えるコード例を含みます。 詳しく読む 公開日 2026年2月1日 C#でXFINIUM.PDFからIronPdfへ移行する方法 この完全なC#ガイドでXFINIUM.PDFからIronPDFへの移行をマスターしてください。座標ベースの手動ポジショニングから宣言的なHTML/CSSレンダリングに切り替えます。グラフィックスプリミティブの置き換えと自動レイアウトのコード例を含みます。 詳しく読む C#でKaizen.ioからIronPDFに移行する方法C#でiTextからIronPDFに移行す...
公開日 2026年2月1日 C#でZetPDFからIronPDFに移行する方法 この完全なC#ガイドでZetPDFからIronPDFへの移行をマスターしてください。座標ベースのライブラリから最新のHTML-to-PDFソリューションに切り替えます。HTML変換、PDFのマージ、PDFSharpの依存関係の削除のコード例が含まれています。 詳しく読む
公開日 2026年2月1日 C#でScryber.CoreからIronPDFに移行する方法 この完全なC#ガイドでScryber.CoreからIronPDFへの移行をマスターしてください。カスタムXML/HTMLパースから最新のChromiumレンダラーに切り替えます。HTML変換、URLレンダリング、独自のバインディングを置き換えるコード例を含みます。 詳しく読む
公開日 2026年2月1日 C#でXFINIUM.PDFからIronPdfへ移行する方法 この完全なC#ガイドでXFINIUM.PDFからIronPDFへの移行をマスターしてください。座標ベースの手動ポジショニングから宣言的なHTML/CSSレンダリングに切り替えます。グラフィックスプリミティブの置き換えと自動レイアウトのコード例を含みます。 詳しく読む