C#でNReco PDFジェネレーターからIronPDFへ移行する方法
NRecoPDFジェネレーターからIronPDFへの移行:完全なC#移行ガイド
NReco PDF GeneratorからIronPDFに移行することで、wkhtmltopdfから受け継いだ重大なセキュリティ脆弱性を排除し、.NET PDFワークフローを非推奨のWebKit Qtエンジン(2012年頃)からCSS3とJavaScriptをフルサポートした最新のChromiumベースのレンダラーにアップグレードします。 このガイドは、NReco PDF Generatorのセキュリティ上の懸念とレンダリングの制限の両方に対処する、包括的で段階的な移行パスを提供します。
なぜNReco PDFジェネレーターからIronPDFへ移行するのか
NRecoPDFジェネレータの重大なセキュリティ問題
NReco PDF Generatorは、非推奨のwkhtmltopdfバイナリをラップし、そのセキュリティ脆弱性をすべて継承しています。 これは机上の空論ではありません。wkhtmltopdfが2020年に放棄されて以来、20以上のCVEが文書化されており、パッチは提供されていません:
- CVE-2020-21365: サーバサイドリクエストフォージェリ (SSRF)
- CVE-2022-35583:HTML インジェクションによるローカルファイルの読み取り
- CVE-2022-35580:リモートコード実行の可能性
基礎となるwkhtmltopdfプロジェクトはもはや保守されていないため、これらの脆弱性にパッチを当てることはできません。
追加の NReco PDF ジェネレーターの制限
1.ウォーターマーク付き無料版:本番使用には、販売に連絡する必要がある不透明な価格設定の有料ライセンスが必要です。
2.非推奨レンダリングエンジン:WebKit Qt (2012 年頃) は、限られた最新の Web サポートしか提供しません:
- CSSグリッドやFlexboxを使用しない
- 最新のJavaScript(ES6+)は使用しないでください。
- 貧弱なウェブフォントサポート
- CSS変数やカスタムプロパティを使用しない
3.外部バイナリ依存:プラットフォームごとにwkhtmltopdfバイナリを管理する必要があります(wkhtmltopdf.exe, wkhtmltox.dll)。
4.アクティブな開発なし: ラッパーは、基礎となるエンジンのアップデートなしでメンテナンスを受けます。
5.限定された非同期サポート: 同期APIは、Webアプリケーションのスレッドをブロックします。
NReco PDF GeneratorとIronPDFの比較
| アスペクト | NReco PDFジェネレータ | IronPDF |
|---|---|---|
| レンダリングエンジン | WebKit Qt (2012) | クロミウム(現在) |
| セキュリティ | 20以上のCVE、パッチなし | アクティブなセキュリティアップデート |
| CSSサポート | CSS2.1、限定的なCSS3 | フルCSS3、グリッド、フレックスボックス |
| JavaScript | 基本的なES5 | 完全なES6+、async/await |
| 依存関係 | 外部wkhtmltopdfバイナリ | 自己完結型 |
| 非同期サポート | 同期のみ | 完全なasync/await |
| ウェブフォント | 制限的 | フルGoogleフォント、@font-face |
| ライセンス | 価格は不明です。 | 透明性のある価格設定 |
| 無料トライアル | 透かし入り | 全機能 |
2025年、2026年まで.NET 10とC# 14の採用を計画しているチームにとって、IronPDFはアクティブな開発と最新のレンダリング機能を備えた将来性のある基盤を提供します。
始める前に
前提条件
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パッケージの変更
# Remove NReco.PdfGenerator
dotnet remove package NReco.PdfGenerator
# Install IronPDF
dotnet add package IronPdf# Remove NReco.PdfGenerator
dotnet remove package NReco.PdfGenerator
# Install IronPDF
dotnet add package IronPdfまた、配備からwkhtmltopdfバイナリを削除してください:
wkhtmltopdf.exe、wkhtmltox.dllをプロジェクトから削除してください。- wkhtmltopdfインストールスクリプトの削除
- プラットフォーム固有のバイナリフォルダの削除
ライセンス構成
// 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.comNRecoPDFジェネレーターの使用法を特定する
# Find all NReco.PdfGenerator references
grep -r "NReco.PdfGenerator\|HtmlToPdfConverter\|GeneratePdf" --include="*.cs" .# Find all NReco.PdfGenerator references
grep -r "NReco.PdfGenerator\|HtmlToPdfConverter\|GeneratePdf" --include="*.cs" .完全な API リファレンス
コア クラス マッピング
| NReco PDFジェネレータ | IronPDF | ノート |
|---|---|---|
| <コード>HtmlToPdfConverter</コード | <コード>ChromePdfRenderer</コード | メインレンダラー |
| <コード>ページマージン</コード | 個々のマージン特性 | MarginTop、MarginBottomなど。 |
| <コード>ページの向き</コード | <コード>PdfPaperOrientation</コード | 列挙 |
| <コード>ページサイズ</コード | <コード>PdfPaperSize</コード | 列挙 |
レンダリング メソッド マッピング
| NReco PDFジェネレータ | IronPDF | ノート |
|---|---|---|
GeneratePdf(html)を実行してください。 | RenderHtmlAsPdf(html)を使用してください。 | PdfDocument を返します。 |
| <コード>GeneratePdfFromFile(url, output) | RenderUrlAsPdf(url)を使用してください。 | 直接URLサポート |
| <コード>GeneratePdfFromFile(htmlPath, output) | RenderHtmlFileAsPdf(path)を実行してください。 | ファイルパス |
| (非同期はサポートされていません)_。 | RenderHtmlAsPdfAsync(html)。 | 非同期バージョン |
| (非同期はサポートされていません)_。 | RenderUrlAsPdfAsync(url)を使用してください。 | 非同期バージョン |
ページ構成マッピング
| NReco PDFジェネレータ | IronPDF | ノート |
|---|---|---|
ページ幅 = 210 | RenderingOptions.PaperSize=PdfPaperSize.A4。 | enum または SetCustomPaperSize を使用してください。 |
PageHeight = 297 | RenderingOptions.SetCustomPaperSizeinMilimeters(w, h). | カスタムサイズ |
Orientation = PageOrientation.Landscape です。 | RenderingOptions.PaperOrientation=PdfPaperOrientation.Landscape。 | 風景 |
| <コード>サイズ = PageSize.A4 | RenderingOptions.PaperSize=PdfPaperSize.A4。 | 用紙サイズ列挙 |
マージン マッピング
| NReco PDFジェネレータ | IronPDF | ノート |
|---|---|---|
マージン.トップ = 10 | RenderingOptions.MarginTop = 10. | 単位:ミリメートル |
Margins.Bottom = 10. | RenderingOptions.MarginBottom = 10<//code>. | 単位:ミリメートル |
Margins.Left = 10. | RenderingOptions.MarginLeft = 10<//code>. | 単位:ミリメートル |
Margins.Right = 10. | RenderingOptions.MarginRight = 10. | 単位:ミリメートル |
new PageMargins { ... } | 個々のプロパティ | マージンなし |
ヘッダー/フッター プレースホルダー マッピング
| NReco PDFジェネレータ(wkhtmltopdf) | IronPDF | ノート |
|---|---|---|
| <コード>[ページ]</コード | <コード>{ページ}</コード | 現在のページ番号 |
| <コード>[トップページ]</コード | <コード>{総ページ数}</コード | 総ページ数 |
| <コード>[日付]</コード | {date}<//code> | 現在の日付 |
| <コード>[時間]</コード | <コード>{時間}</コード | 現在の時間 |
| <コード>[タイトル]</コード | {html-title}<//code> | 文書タイトル |
出力処理のマッピング
| NReco PDFジェネレータ | IronPDF | ノート |
|---|---|---|
byte[] pdfBytes = GeneratePdf(html). | PdfDocument pdf = RenderHtmlAsPdf(html). | オブジェクトを返します |
File.WriteAllBytes(path, bytes). | pdf.SaveAs(path)のようにします。 | 直接保存 |
pdfBytesを返す。 | pdf.BinaryDataを返す。 | バイト配列を取得 |
new MemoryStream(pdfBytes). | <コード>pdf.Stream</コード | ストリーム |
コード移行の例
例1: 基本的なHTMLからPDFへ
翻訳前 (NReco PDF Generator):
// NuGet: Install-Package NReco.PdfGenerator
using NReco.PdfGenerator;
using System.IO;
class Program
{
static void Main()
{
var htmlToPdf = new HtmlToPdfConverter();
var htmlContent = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";
var pdfBytes = htmlToPdf.GeneratePdf(htmlContent);
File.WriteAllBytes("output.pdf", pdfBytes);
}
}// NuGet: Install-Package NReco.PdfGenerator
using NReco.PdfGenerator;
using System.IO;
class Program
{
static void Main()
{
var htmlToPdf = new HtmlToPdfConverter();
var htmlContent = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";
var pdfBytes = htmlToPdf.GeneratePdf(htmlContent);
File.WriteAllBytes("output.pdf", pdfBytes);
}
}IRON VB CONVERTER ERROR developers@ironsoftware.com翻訳後(IronPDF):。
// NuGet: Install-Package IronPdf
using IronPdf;
using System.IO;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var htmlContent = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("output.pdf");
}
}// NuGet: Install-Package IronPdf
using IronPdf;
using System.IO;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var htmlContent = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("output.pdf");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.com基本的な違いは、戻り値の型と保存パターンです。 NReco PDF GeneratorのHtmlToPdfConverter.GeneratePdf()は、Byte[]を返すので、File.WriteAllBytes()を使って手動でディスクに書き込む必要があります。 IronPDFのChromePdfRenderer.RenderHtmlAsPdf()は組み込みのSaveAs()メソッドを持つPdfDocumentオブジェクトを返します。
このオブジェクト指向のアプローチは、保存する前にPDFを操作(透かしを追加したり、文書をマージしたり、セキュリティを追加したり)できるという、さらなる利点を提供します。 既存のコードとの互換性のために生のバイトが必要な場合は、pdf.BinaryDataを使用してください。 その他のレンダリングオプションについては、HTML to PDF documentationを参照してください。
例2: 余白を使ったカスタムページサイズ
翻訳前 (NReco PDF Generator):
// NuGet: Install-Package NReco.PdfGenerator
using NReco.PdfGenerator;
using System.IO;
class Program
{
static void Main()
{
var htmlToPdf = new HtmlToPdfConverter();
htmlToPdf.PageWidth = 210;
htmlToPdf.PageHeight = 297;
htmlToPdf.Margins = new PageMargins { Top = 10, Bottom = 10, Left = 10, Right = 10 };
var htmlContent = "<html><body><h1>Custom Page Size</h1><p>A4 size document with margins.</p></body></html>";
var pdfBytes = htmlToPdf.GeneratePdf(htmlContent);
File.WriteAllBytes("custom-size.pdf", pdfBytes);
}
}// NuGet: Install-Package NReco.PdfGenerator
using NReco.PdfGenerator;
using System.IO;
class Program
{
static void Main()
{
var htmlToPdf = new HtmlToPdfConverter();
htmlToPdf.PageWidth = 210;
htmlToPdf.PageHeight = 297;
htmlToPdf.Margins = new PageMargins { Top = 10, Bottom = 10, Left = 10, Right = 10 };
var htmlContent = "<html><body><h1>Custom Page Size</h1><p>A4 size document with margins.</p></body></html>";
var pdfBytes = htmlToPdf.GeneratePdf(htmlContent);
File.WriteAllBytes("custom-size.pdf", pdfBytes);
}
}IRON VB CONVERTER ERROR developers@ironsoftware.com翻訳後(IronPDF):。
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 10;
renderer.RenderingOptions.MarginBottom = 10;
renderer.RenderingOptions.MarginLeft = 10;
renderer.RenderingOptions.MarginRight = 10;
var htmlContent = "<html><body><h1>Custom Page Size</h1><p>A4 size document with margins.</p></body></html>";
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("custom-size.pdf");
}
}// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 10;
renderer.RenderingOptions.MarginBottom = 10;
renderer.RenderingOptions.MarginLeft = 10;
renderer.RenderingOptions.MarginRight = 10;
var htmlContent = "<html><body><h1>Custom Page Size</h1><p>A4 size document with margins.</p></body></html>";
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("custom-size.pdf");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comNReco PDF Generatorは、数値寸法(PageWidth = 210, PageHeight=297)とPageMarginsオブジェクトを使用します。 IronPDFはPdfPaperSize列挙型(A4、レター、リーガルのような標準サイズを含む)とRenderingOptionsオブジェクトの個々のマージンプロパティを使用します。
主な移行の変更点
PageWidth/PageHeight→RenderingOptions.PaperSize=PdfPaperSize.A4。です。new PageMargins { Top = 10, ... }→ 個々のプロパティ:RenderingOptions.MarginTop = 10です。
列挙でカバーされていないカスタム用紙サイズについては、RendereringOptions.SetCustomPaperSizeinMilimeters(width, height)を使用してください。 ページ構成オプションの詳細については、こちらをご覧ください。
例3: URLからPDFへの変換
翻訳前 (NReco PDF Generator):
// NuGet: Install-Package NReco.PdfGenerator
using NReco.PdfGenerator;
using System.IO;
class Program
{
static void Main()
{
var htmlToPdf = new HtmlToPdfConverter();
var pdfBytes = htmlToPdf.GeneratePdfFromFile("https://www.example.com", null);
File.WriteAllBytes("webpage.pdf", pdfBytes);
}
}// NuGet: Install-Package NReco.PdfGenerator
using NReco.PdfGenerator;
using System.IO;
class Program
{
static void Main()
{
var htmlToPdf = new HtmlToPdfConverter();
var pdfBytes = htmlToPdf.GeneratePdfFromFile("https://www.example.com", null);
File.WriteAllBytes("webpage.pdf", pdfBytes);
}
}IRON VB CONVERTER ERROR developers@ironsoftware.com翻訳後(IronPDF):。
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
pdf.SaveAs("webpage.pdf");
}
}// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
pdf.SaveAs("webpage.pdf");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comNReco PDF Generatorは、GeneratePdfFromFile()という紛らわしい名前のメソッドを、ローカルファイルとURLの両方に、NULL可能な第2引数付きで使用します。 IronPDFは専用のメソッドを提供します:RenderUrlAsPdf()はURLに対して、RenderHtmlFileAsPdf()はローカルのHTMLファイルに対してです。
IronPdfのアプローチはよりすっきりしていて直感的です。非同期ウェブアプリケーションでは、await renderer.RenderUrlAsPdfAsync(url) を使ってスレッドのブロックを避けてください。
重要な移行に関する注意事項
ズーム値変換
NReco PDF Generatorは浮動小数点数(0.0-2.0)を使用し、IronPDFはパーセント整数を使用します:
// NReco PDF Generator: Zoom = 0.9f (90%)
// IronPDF: Zoom = 90
// Conversion formula:
int ironPdfZoom = (int)(nrecoZoom * 100);// NReco PDF Generator: Zoom = 0.9f (90%)
// IronPDF: Zoom = 90
// Conversion formula:
int ironPdfZoom = (int)(nrecoZoom * 100);IRON VB CONVERTER ERROR developers@ironsoftware.comプレースホルダーの構文の更新
すべてのヘッダー/フッターのプレースホルダーを更新する必要があります:
| NReco PDFジェネレータ | IronPDF |
|---|---|
| <コード>[ページ]</コード | <コード>{ページ}</コード |
| <コード>[トップページ]</コード | <コード>{総ページ数}</コード |
| <コード>[日付]</コード | {date}<//code> |
| <コード>[タイトル]</コード | {html-title}<//code> |
// NReco PDF Generator:
converter.PageFooterHtml = "<div>Page [page] of [topage]</div>";
// IronPDF:
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
HtmlFragment = "<div>Page {page} of {total-pages}</div>",
MaxHeight = 20
};// NReco PDF Generator:
converter.PageFooterHtml = "<div>Page [page] of [topage]</div>";
// IronPDF:
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
HtmlFragment = "<div>Page {page} of {total-pages}</div>",
MaxHeight = 20
};IRON VB CONVERTER ERROR developers@ironsoftware.com返品タイプの変更
NReco PDF Generatorはbyte[]を直接返します; IronPDFはPdfDocumentを返します:
//NReco PDFジェネレータpattern:
byte[] pdfBytes = converter.GeneratePdf(html);
File.WriteAllBytes("output.pdf", pdfBytes);
//IronPDFpattern:
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
// Or if you need bytes:
byte[] pdfBytes = renderer.RenderHtmlAsPdf(html).BinaryData;//NReco PDFジェネレータpattern:
byte[] pdfBytes = converter.GeneratePdf(html);
File.WriteAllBytes("output.pdf", pdfBytes);
//IronPDFpattern:
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
// Or if you need bytes:
byte[] pdfBytes = renderer.RenderHtmlAsPdf(html).BinaryData;IRON VB CONVERTER ERROR developers@ironsoftware.comスレッドの安全性と再利用性
NReco PDF Generatorは通常、呼び出しごとに新しいコンバータを作成します。 IronPDFのChromePdfRendererはスレッドセーフで再利用可能です:
//NReco PDFジェネレータpattern (creates new each time):
public byte[] Generate(string html)
{
var converter = new HtmlToPdfConverter();
return converter.GeneratePdf(html);
}
//IronPDFpattern (reuse renderer, thread-safe):
private readonly ChromePdfRenderer _renderer = new ChromePdfRenderer();
public byte[] Generate(string html)
{
return _renderer.RenderHtmlAsPdf(html).BinaryData;
}//NReco PDFジェネレータpattern (creates new each time):
public byte[] Generate(string html)
{
var converter = new HtmlToPdfConverter();
return converter.GeneratePdf(html);
}
//IronPDFpattern (reuse renderer, thread-safe):
private readonly ChromePdfRenderer _renderer = new ChromePdfRenderer();
public byte[] Generate(string html)
{
return _renderer.RenderHtmlAsPdf(html).BinaryData;
}IRON VB CONVERTER ERROR developers@ironsoftware.com非同期サポート (新機能)
IronPDFはNReco PDF Generatorが提供できない非同期/待機パターンをサポートしています:
// NReco PDF Generator: No async support available
// IronPDF: Full async support
public async Task<byte[]> GenerateAsync(string html)
{
var pdf = await _renderer.RenderHtmlAsPdfAsync(html);
return pdf.BinaryData;
}// NReco PDF Generator: No async support available
// IronPDF: Full async support
public async Task<byte[]> GenerateAsync(string html)
{
var pdf = await _renderer.RenderHtmlAsPdfAsync(html);
return pdf.BinaryData;
}IRON VB CONVERTER ERROR developers@ironsoftware.comトラブルシューティング
問題 1: HtmlToPdfConverter が見つかりません。
問題:HtmlToPdfConverterクラスがIronPdfに存在しません。
解決策:ChromePdfRendererを使用してください:
// NReco PDF Generator
var converter = new HtmlToPdfConverter();
// IronPDF
var renderer = new ChromePdfRenderer();// NReco PDF Generator
var converter = new HtmlToPdfConverter();
// IronPDF
var renderer = new ChromePdfRenderer();IRON VB CONVERTER ERROR developers@ironsoftware.com問題2: GeneratePdfが間違った型を返す
問題:コードはbyte[]を期待するが、PdfDocumentが返ってくる。
ソリューション:.BinaryDataプロパティにアクセスします:
// NReco PDF Generator
byte[] pdfBytes = converter.GeneratePdf(html);
// IronPDF
byte[] pdfBytes = renderer.RenderHtmlAsPdf(html).BinaryData;// NReco PDF Generator
byte[] pdfBytes = converter.GeneratePdf(html);
// IronPDF
byte[] pdfBytes = renderer.RenderHtmlAsPdf(html).BinaryData;IRON VB CONVERTER ERROR developers@ironsoftware.com問題 3: PageMargins オブジェクトが見つかりません
問題:PageMarginsクラスがIronPDFに存在しません。
解決策:個々のマージンプロパティを使用します:
// NReco PDF Generator
converter.Margins = new PageMargins { Top = 10, Bottom = 10, Left = 10, Right = 10 };
// IronPDF
renderer.RenderingOptions.MarginTop = 10;
renderer.RenderingOptions.MarginBottom = 10;
renderer.RenderingOptions.MarginLeft = 10;
renderer.RenderingOptions.MarginRight = 10;// NReco PDF Generator
converter.Margins = new PageMargins { Top = 10, Bottom = 10, Left = 10, Right = 10 };
// IronPDF
renderer.RenderingOptions.MarginTop = 10;
renderer.RenderingOptions.MarginBottom = 10;
renderer.RenderingOptions.MarginLeft = 10;
renderer.RenderingOptions.MarginRight = 10;IRON VB CONVERTER ERROR developers@ironsoftware.com課題4:ページ番号が表示されない
問題:[page]と[topage]プレースホルダが機能しません。
解決策:IronPDFプレースホルダーの構文を更新しました:
// NReco PDF Generator
converter.PageFooterHtml = "<div>Page [page] of [topage]</div>";
// IronPDF
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
HtmlFragment = "<div>Page {page} of {total-pages}</div>",
MaxHeight = 20
};// NReco PDF Generator
converter.PageFooterHtml = "<div>Page [page] of [topage]</div>";
// IronPDF
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
HtmlFragment = "<div>Page {page} of {total-pages}</div>",
MaxHeight = 20
};IRON VB CONVERTER ERROR developers@ironsoftware.com移行チェックリスト
移行前
- [ ] コードベース内のすべての
NReco.PdfGeneratorの用法をインベントリ化する。 - [ ] すべての
CustomWkHtmlArgsとCustomWkHtmlPageArgsの値を文書化する。 - [プレースホルダを含むすべてのヘッダー/フッターHTMLテンプレートをリストアップしてください。
- [非同期要件(ウェブコントローラ、サービス)の特定)
- [ズームとマージンの設定を見直す
- [比較のため、既存のPDF出力をバックアップしてください。
- [IronPDF ライセンスキーの取得
パッケージの変更
- [ ]
NReco.PdfGenerator<//code> NuGetパッケージを削除する。 - [ ]
IronPdfNuGetパッケージをインストールします:dotnet add package IronPdfNuGetパッケージをインストールします。 - [ ] 名前空間のインポートを
using NReco.PdfGenerator;からusing IronPdf;に更新してください。
コードの変更
- [ ] 起動時にライセンスキー設定を追加する
- [ ]
HtmlToPdfConverterをChromePdfRendererに置き換えてください。 - [
GeneratePdf(html)をRenderHtmlAsPdf(html)を使用してください。に置き換えてください。 - [ ]
GeneratePdfFromFile(url, null)をRenderUrlAsPdf(url)を使用してください。に置き換えてください。 - [ ]
PageMarginsオブジェクトを個々のマージンプロパティに変換する - [ ] ズーム値を float から percentage に更新する
- [プレースホルダーの構文を更新してください:
[page]→{page}、[topage]→{total-pages}。 - [ ]
File.WriteAllBytes()をpdf.SaveAs()に置き換えてください。 - [ ] 同期コールを非同期に変換する。
移行後
- [ ] プロジェクト/デプロイメントからwkhtmltopdfバイナリを削除する
- [ ] Dockerファイルを更新し、wkhtmltopdfのインストールを削除する。
- [PDF 出力を比較する回帰テストの実行
- [ヘッダー/フッターのプレースホルダーが正しくレンダリングされることを確認してください。
- [すべてのターゲットプラットフォーム(Windows、Linux、macOS)でテストしてください。)
- [] CI/CDパイプラインを更新してwkhtmltopdfステップを削除する
- [セキュリティスキャンを更新し、CVE の除去を確認する。
結論
NReco PDF GeneratorからIronPDFへの移行は、レンダリングエンジンを非推奨の2012 WebKit Qtから最新のChromiumベースのソリューションにアップグレードしながら、重要なセキュリティ脆弱性に対処します。 この移行により、パッチが適用できない20以上のCVEが排除され、CSS3とES6+ JavaScriptの完全サポートが追加され、外部バイナリ依存が削除され、Webアプリケーションのパフォーマンス向上のための非同期/待機パターンが可能になります。
この移行における主な変更点は以下のとおりです: 1.セキュリティ: 20以上のCVEを排除 → アクティブなセキュリティアップデート 2.レンダリング:WebKit Qt (2012) → Chromium (現在) 3.依存関係: 外部wkhtmltopdf → 自己完結型 4.非同期: 同期のみ → 完全な非同期/待機 5.クラス:HtmlToPdfConverter → ChromePdfRenderer 6.余白:PageMarginsオブジェクト → 個別プロパティ 7.プレースホルダ:[page]/[topage] → {page}/{total-pages}となります。
IronPDFドキュメント、チュートリアル、APIリファレンスをご覧いただき、NReco PDF Generatorへの移行を加速させてください。






