IronPDF 2021: Chrome Rendering Engine EAP – PDF生成のゲームチェンジャー!
DinkToPdfはwkhtmltopdfをラップし、そのセキュリティの脆弱性と技術的な制限をすべて受け継いでいます。 これらの問題を理解することは、移行の緊急性を評価する上で非常に重要です。
重大なセキュリティ問題
DinkToPdf は wkhtmltopdf から未適用のセキュリティアドバイザリーを引き継ぎます:
- CVE-2022-35583 (SSRF): wkhtmltopdf 0.12.6 に対するサーバーサイドリクエストフォージェリーアドバイザリー (NVD の CVSS 9.8; 上流プロジェクトによって、ライブラリのバグではなくアプリケーション側の入力サニタイズ問題として異議が唱えられています。) どちらにせよ修正されることはありません。
- アーカイブされたプロジェクト:
wkhtmltopdf/wkhtmltopdfリポジトリは2023年1月2日にアーカイブされ、wkhtmltopdfGitHub組織全体は2024年7月10日にアーカイブされました。 - 今後のセキュリティパッチなし: 既知または将来の脆弱性は上流で修正されません。
技術的な問題
| 問題 | インパクト |
|---|---|
| スレッドセーフティ | BasicConverter はシングルスレッドのみです; SynchronizedConverter は呼び出しをシリアライズし、負荷下でネイティブ側のクラッシュにまだ見舞われる可能性があります |
| ネイティブバイナリ | プラットフォーム固有のlibwkhtmltox バイナリを使用した複雑な展開 |
| CSSの制限事項 | 古い QtWebKit のフォーク — 現代のフレックスボックス/グリッドレイアウトサポートなし |
| JavaScript(JavaScript | 一貫性のない実行、タイムアウト |
| レンダリング。 | 旧式の QtWebKit ベースエンジン (wkhtmltopdf 0.12.6、最終リリースは2020年6月) |
| メンテナンス | DinkToPdf 1.0.8 最後のリリースは 2017年4月18日に NuGet で |
アーキテクチャの比較
| アスペクト | DinkToPdf | IronPDF |
|---|---|---|
| セキュリティ。 | CVE-2022-35583 (SSRF)、未修正/上流での異議あり | 既知の重大な CVE なし |
| レンダリングエンジン | 古い QtWebKit フォーク (wkhtmltopdf 0.12.6) | モダンChromium |
| スレッドセーフティ | SynchronizedConverter は呼び出しをシリアライズします; native-side crashes reported under load |
スレッドセーフ設計 |
| ネイティブの依存関係 | プラットフォーム固有のlibwkhtmltox バイナリ |
管理された NuGet パッケージ |
| CSSサポート | 現代的なフレックスボックス/グリッドなし | 完全なCSS3 |
| JavaScript(JavaScript | 限定的で一貫性がない | サポート対象 |
| メンテナンス | DinkToPdf 最後のリリースは 2017年4月; wkhtmltopdf 組織は 2024年7月にアーカイブされました | 積極的なメンテナンス |
機能比較
| フィーチャー | DinkToPdf | IronPDF |
|---|---|---|
| HTMLからPDFへ | ✅ (古いエンジン) | ✅ (Chromium) |
| URLからPDFへ | ✅ | ✅ |
| カスタムマージン | ✅ | ✅ |
| ヘッダー/フッター | ✅ (限定) | ✅ (完全なHTML) |
| CSS3 | ❌ 制限付き | フル |
| フレックスボックス/グリッド | ❌ | ✅ |
| JavaScript | ⚠ 限定されています | フル |
| PDF操作 | ❌ | ✅ |
| フォーム入力 | ❌ | ✅ |
| デジタル署名 | ❌ | ✅ |
| 暗号化 | ❌ | ✅ |
| 透かし | ❌ | ✅ |
| マージ/スプリット | ❌ | ✅ |
移行前の準備
前提条件
あなたの環境がこれらの要件を満たしていることを確認してください:
- .NET Framework 4.6.2以上、.NET Core 3.1以上、または.NET 5/6/7/8/9/10
- Visual Studio 2019+またはC#拡張機能付きVS Code
- NuGetパッケージマネージャへのアクセス
- IronPDFライセンスキー (ironpdf.com にて無料トライアル可能)
DinkToPdfの使用状況を確認する
ソリューションディレクトリで以下のコマンドを実行し、すべてのDinkToPdf参照を識別してください:
# Find allDinkToPdfusages in your codebase
grep -r "using DinkToPdf" --include="*.cs" .
grep -r "SynchronizedConverter\|HtmlToPdfDocument\|ObjectSettings" --include="*.cs" .
# Find NuGet package references
grep -r "DinkToPdf" --include="*.csproj" .
# Find wkhtmltopdf binaries
find . -name "libwkhtmltox*"
# Find allDinkToPdfusages in your codebase
grep -r "using DinkToPdf" --include="*.cs" .
grep -r "SynchronizedConverter\|HtmlToPdfDocument\|ObjectSettings" --include="*.cs" .
# Find NuGet package references
grep -r "DinkToPdf" --include="*.csproj" .
# Find wkhtmltopdf binaries
find . -name "libwkhtmltox*"
予想される画期的な変更
| 変更 | DinkToPdf | IronPDF | インパクト |
|---|---|---|---|
| コンバーター | SynchronizedConverter(new PdfTools()) |
ChromePdfRenderer |
よりシンプルなインスタンス化 |
| ドキュメント | HtmlToPdfDocument |
直接メソッド呼び出し | ドキュメントオブジェクトなし |
| 設定 | GlobalSettings + ObjectSettings |
RenderingOptions |
単一オプションオブジェクト |
| リターンタイプ | byte[] |
PdfDocument |
より強力なオブジェクト |
| バイナリ | libwkhtmltox.dll/so |
なし(マネージド) | ネイティブファイルの削除 |
| スレッドセーフ。 | BasicConverter シングルスレッド; SynchronizedConverter はシリアライズします |
デフォルトでスレッドセーフ | よりシンプルなコード |
| DI | シングルトン必須 | 生涯 | 柔軟性 |
ステップごとの移行プロセス
ステップ 1: NuGet パッケージを更新する
DinkToPdfを削除し、IronPDFをインストールしてください:
# Remove DinkToPdf
dotnet remove package DinkToPdf
# Install IronPDF
dotnet add package IronPdf
# Remove DinkToPdf
dotnet remove package DinkToPdf
# Install IronPDF
dotnet add package IronPdf
ステップ 2: ネイティブ バイナリの削除
プロジェクトからこれらのプラットフォーム固有のファイルを削除してください:
libwkhtmltox.dll(Windows)libwkhtmltox.so(Linux)libwkhtmltox.dylib(macOS)
IronPDFにはネイティブの依存関係はありません。
ステップ 3: 名前空間参照の更新
DinkToPdf名前空間をIronPDFに置き換えてください:
// Remove these
using DinkToPdf;
using DinkToPdf.Contracts;
// Add this
using IronPdf;
// Remove these
using DinkToPdf;
using DinkToPdf.Contracts;
// Add this
using IronPdf;
Imports IronPdf
ステップ 4: ライセンスの設定
// Add at application startup (Program.cs or Global.asax)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Add at application startup (Program.cs or Global.asax)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
' Add at application startup (Program.vb or Global.asax)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
完全な API 移行のリファレンス
コア クラス マッピング
| DinkToPdf | IronPDF |
|---|---|
SynchronizedConverter |
ChromePdfRenderer |
BasicConverter |
ChromePdfRenderer |
PdfTools |
不要 |
HtmlToPdfDocument |
不要 |
GlobalSettings |
RenderingOptions |
ObjectSettings |
RenderingOptions |
MarginSettings |
個々のマージン特性 |
グローバル設定のマッピング
| DinkToPdf グローバル設定 | IronPDF 同等物 |
|---|---|
ColorMode = ColorMode.Color |
デフォルト(常にカラー) |
Orientation = Orientation.Portrait |
PaperOrientation = PdfPaperOrientation.Portrait |
Orientation = Orientation.Landscape |
PaperOrientation = PdfPaperOrientation.Landscape |
PaperSize = PaperKind.A4 |
PaperSize = PdfPaperSize.A4 |
Margins = new MarginSettings() |
個々のマージン特性 |
マージン設定のマッピング
| DinkToPdf のマージン | IronPDF 同等物 |
|---|---|
Margins.Top = 10 |
MarginTop = 10 |
Margins.Bottom = 10 |
MarginBottom = 10 |
Margins.Left = 15 |
MarginLeft = 15 |
Margins.Right = 15 |
MarginRight = 15 |
コード移行の例
基本的な HTML から PDF
基本的な変換は、DinkToPdfの冗長な設定からIronPDFの合理化されたAPIへの劇的な単純化を示しています。
DinkToPdfの実装:
// NuGet: Install-Package DinkToPdf
using DinkToPdf;
using DinkToPdf.Contracts;
using System.IO;
class Program
{
static void Main()
{
var converter = new SynchronizedConverter(new PdfTools());
var doc = new HtmlToPdfDocument()
{
GlobalSettings = {
ColorMode = ColorMode.Color,
Orientation = Orientation.Portrait,
PaperSize = PaperKind.A4,
},
Objects = {
new ObjectSettings() {
HtmlContent = "<h1>Hello World</h1><p>This is a PDF from HTML.</p>",
WebSettings = { DefaultEncoding = "utf-8" }
}
}
};
byte[] pdf = converter.Convert(doc);
File.WriteAllBytes("output.pdf", pdf);
}
}
// NuGet: Install-Package DinkToPdf
using DinkToPdf;
using DinkToPdf.Contracts;
using System.IO;
class Program
{
static void Main()
{
var converter = new SynchronizedConverter(new PdfTools());
var doc = new HtmlToPdfDocument()
{
GlobalSettings = {
ColorMode = ColorMode.Color,
Orientation = Orientation.Portrait,
PaperSize = PaperKind.A4,
},
Objects = {
new ObjectSettings() {
HtmlContent = "<h1>Hello World</h1><p>This is a PDF from HTML.</p>",
WebSettings = { DefaultEncoding = "utf-8" }
}
}
};
byte[] pdf = converter.Convert(doc);
File.WriteAllBytes("output.pdf", pdf);
}
}
Imports DinkToPdf
Imports DinkToPdf.Contracts
Imports System.IO
Module Program
Sub Main()
Dim converter = New SynchronizedConverter(New PdfTools())
Dim doc = New HtmlToPdfDocument() With {
.GlobalSettings = New GlobalSettings() With {
.ColorMode = ColorMode.Color,
.Orientation = Orientation.Portrait,
.PaperSize = PaperKind.A4
},
.Objects = {
New ObjectSettings() With {
.HtmlContent = "<h1>Hello World</h1><p>This is a PDF from HTML.</p>",
.WebSettings = New WebSettings() With {
.DefaultEncoding = "utf-8"
}
}
}
}
Dim pdf As Byte() = converter.Convert(doc)
File.WriteAllBytes("output.pdf", pdf)
End Sub
End Module
IronPDFの実装:。
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a PDF from HTML.</p>");
pdf.SaveAs("output.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a PDF from HTML.</p>");
pdf.SaveAs("output.pdf");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a PDF from HTML.</p>")
pdf.SaveAs("output.pdf")
End Sub
End Class
IronPDFは20行のDinkToPdf設定を4行に減らします。 SynchronizedConverter なし、PdfTools なし、HtmlToPdfDocument なし、ObjectSettings なし—ただレンダリングして保存します。 その他のオプションについては、HTML to PDF documentationを参照してください。
URLからPDFへの変換
DinkToPdfの実装:
// NuGet: Install-Package DinkToPdf
using DinkToPdf;
using DinkToPdf.Contracts;
using System.IO;
class Program
{
static void Main()
{
var converter = new SynchronizedConverter(new PdfTools());
var doc = new HtmlToPdfDocument()
{
GlobalSettings = {
ColorMode = ColorMode.Color,
Orientation = Orientation.Portrait,
PaperSize = PaperKind.A4,
},
Objects = {
new ObjectSettings() {
Page = "https://www.example.com",
}
}
};
byte[] pdf = converter.Convert(doc);
File.WriteAllBytes("webpage.pdf", pdf);
}
}
// NuGet: Install-Package DinkToPdf
using DinkToPdf;
using DinkToPdf.Contracts;
using System.IO;
class Program
{
static void Main()
{
var converter = new SynchronizedConverter(new PdfTools());
var doc = new HtmlToPdfDocument()
{
GlobalSettings = {
ColorMode = ColorMode.Color,
Orientation = Orientation.Portrait,
PaperSize = PaperKind.A4,
},
Objects = {
new ObjectSettings() {
Page = "https://www.example.com",
}
}
};
byte[] pdf = converter.Convert(doc);
File.WriteAllBytes("webpage.pdf", pdf);
}
}
Imports DinkToPdf
Imports DinkToPdf.Contracts
Imports System.IO
Module Program
Sub Main()
Dim converter = New SynchronizedConverter(New PdfTools())
Dim doc = New HtmlToPdfDocument() With {
.GlobalSettings = New GlobalSettings() With {
.ColorMode = ColorMode.Color,
.Orientation = Orientation.Portrait,
.PaperSize = PaperKind.A4
},
.Objects = New List(Of ObjectSettings) From {
New ObjectSettings() With {
.Page = "https://www.example.com"
}
}
}
Dim pdf As Byte() = converter.Convert(doc)
File.WriteAllBytes("webpage.pdf", pdf)
End Sub
End Module
IronPDFの実装:。
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
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;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
pdf.SaveAs("webpage.pdf");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderUrlAsPdf("https://www.example.com")
pdf.SaveAs("webpage.pdf")
End Sub
End Class
IronPDFのRenderUrlAsPdf は、ネストされたObjectSettings.Page 設定を直接メソッドコールに置き換えます。 その他のオプションについては、URL to PDF documentationを参照してください。
ランドスケープと余白のカスタム設定
DinkToPdfの実装:
// NuGet: Install-Package DinkToPdf
using DinkToPdf;
using DinkToPdf.Contracts;
using System.IO;
class Program
{
static void Main()
{
var converter = new SynchronizedConverter(new PdfTools());
var doc = new HtmlToPdfDocument()
{
GlobalSettings = {
ColorMode = ColorMode.Color,
Orientation = Orientation.Landscape,
PaperSize = PaperKind.A4,
Margins = new MarginSettings { Top = 10, Bottom = 10, Left = 15, Right = 15 }
},
Objects = {
new ObjectSettings() {
HtmlContent = "<h1>Custom PDF</h1><p>Landscape orientation with custom margins.</p>",
WebSettings = { DefaultEncoding = "utf-8" }
}
}
};
byte[] pdf = converter.Convert(doc);
File.WriteAllBytes("custom.pdf", pdf);
}
}
// NuGet: Install-Package DinkToPdf
using DinkToPdf;
using DinkToPdf.Contracts;
using System.IO;
class Program
{
static void Main()
{
var converter = new SynchronizedConverter(new PdfTools());
var doc = new HtmlToPdfDocument()
{
GlobalSettings = {
ColorMode = ColorMode.Color,
Orientation = Orientation.Landscape,
PaperSize = PaperKind.A4,
Margins = new MarginSettings { Top = 10, Bottom = 10, Left = 15, Right = 15 }
},
Objects = {
new ObjectSettings() {
HtmlContent = "<h1>Custom PDF</h1><p>Landscape orientation with custom margins.</p>",
WebSettings = { DefaultEncoding = "utf-8" }
}
}
};
byte[] pdf = converter.Convert(doc);
File.WriteAllBytes("custom.pdf", pdf);
}
}
Imports DinkToPdf
Imports DinkToPdf.Contracts
Imports System.IO
Module Program
Sub Main()
Dim converter = New SynchronizedConverter(New PdfTools())
Dim doc = New HtmlToPdfDocument() With {
.GlobalSettings = New GlobalSettings() With {
.ColorMode = ColorMode.Color,
.Orientation = Orientation.Landscape,
.PaperSize = PaperKind.A4,
.Margins = New MarginSettings() With {
.Top = 10,
.Bottom = 10,
.Left = 15,
.Right = 15
}
},
.Objects = {
New ObjectSettings() With {
.HtmlContent = "<h1>Custom PDF</h1><p>Landscape orientation with custom margins.</p>",
.WebSettings = New WebSettings() With {
.DefaultEncoding = "utf-8"
}
}
}
}
Dim pdf As Byte() = converter.Convert(doc)
File.WriteAllBytes("custom.pdf", pdf)
End Sub
End Module
IronPDFの実装:。
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
renderer.RenderingOptions.MarginTop = 10;
renderer.RenderingOptions.MarginBottom = 10;
renderer.RenderingOptions.MarginLeft = 15;
renderer.RenderingOptions.MarginRight = 15;
var pdf = renderer.RenderHtmlAsPdf("<h1>Custom PDF</h1><p>Landscape orientation with custom margins.</p>");
pdf.SaveAs("custom.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
renderer.RenderingOptions.MarginTop = 10;
renderer.RenderingOptions.MarginBottom = 10;
renderer.RenderingOptions.MarginLeft = 15;
renderer.RenderingOptions.MarginRight = 15;
var pdf = renderer.RenderHtmlAsPdf("<h1>Custom PDF</h1><p>Landscape orientation with custom margins.</p>");
pdf.SaveAs("custom.pdf");
}
}
Imports IronPdf
Imports IronPdf.Rendering
Imports System
Module Program
Sub Main()
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape
renderer.RenderingOptions.MarginTop = 10
renderer.RenderingOptions.MarginBottom = 10
renderer.RenderingOptions.MarginLeft = 15
renderer.RenderingOptions.MarginRight = 15
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Custom PDF</h1><p>Landscape orientation with custom margins.</p>")
pdf.SaveAs("custom.pdf")
End Sub
End Module
IronPDFのRenderingOptions は、GlobalSettings とMarginSettings の両方を統一された流暢なAPIに置き換えます。 その他の設定オプションについては、rendering options documentationを参照してください。
重要な移行に関する注意事項
ネイティブ バイナリの削除
最も重要なクリーンアップステップは、wkhtmltopdfネイティブバイナリを削除することです。 IronPDFにはネイティブの依存関係はありません:
# Delete native binaries
rm libwkhtmltox.* 2>/dev/null
# Delete native binaries
rm libwkhtmltox.* 2>/dev/null
シングルトンは必要ありません
DinkToPdfのドキュメントでは、SynchronizedConverter をシングルトンとして登録することが推奨されています。 IronPDFのChromePdfRenderer は、あらゆるDIライフタイムでスレッドセーフです:
//DinkToPdf- typically registered as singleton
services.AddSingleton(typeof(IConverter), new SynchronizedConverter(new PdfTools()));
//IronPDF- any lifetime works
services.AddScoped<ChromePdfRenderer>();
// Or just create inline:
var renderer = new ChromePdfRenderer();
//DinkToPdf- typically registered as singleton
services.AddSingleton(typeof(IConverter), new SynchronizedConverter(new PdfTools()));
//IronPDF- any lifetime works
services.AddScoped<ChromePdfRenderer>();
// Or just create inline:
var renderer = new ChromePdfRenderer();
' DinkToPdf - typically registered as singleton
services.AddSingleton(GetType(IConverter), New SynchronizedConverter(New PdfTools()))
' IronPDF - any lifetime works
services.AddScoped(Of ChromePdfRenderer)()
' Or just create inline:
Dim renderer As New ChromePdfRenderer()
リチャーリターンタイプ
DinkToPdfはbyte[] を返します。 IronPDFは、操作機能を持つPdfDocument を返します:
//DinkToPdfreturns byte[]
byte[] pdf = converter.Convert(doc);
File.WriteAllBytes("output.pdf", pdf);
return File(pdf, "application/pdf");
//IronPDFreturns PdfDocument
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
return File(pdf.BinaryData, "application/pdf");
//DinkToPdfreturns byte[]
byte[] pdf = converter.Convert(doc);
File.WriteAllBytes("output.pdf", pdf);
return File(pdf, "application/pdf");
//IronPDFreturns PdfDocument
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
return File(pdf.BinaryData, "application/pdf");
' DinkToPdf returns byte()
Dim pdf As Byte() = converter.Convert(doc)
File.WriteAllBytes("output.pdf", pdf)
Return File(pdf, "application/pdf")
' IronPDF returns PdfDocument
Dim pdfDocument = renderer.RenderHtmlAsPdf(html)
pdfDocument.SaveAs("output.pdf")
Return File(pdfDocument.BinaryData, "application/pdf")
完全なCSS3サポート
DinkToPdfでは失敗するモダンレイアウトもIronPDFでは完璧に機能します:
//DinkToPdf- doesn't work (wkhtmltopdf uses 2015 WebKit)
var html = "<div style='display: flex;'>...</div>"; // Broken!
//IronPDF- full support (modern Chromium)
var html = @"
<div style='display: flex; justify-content: space-between;'>
<div>Left</div>
<div>Right</div>
</div>";
var pdf = renderer.RenderHtmlAsPdf(html); // Works!
//DinkToPdf- doesn't work (wkhtmltopdf uses 2015 WebKit)
var html = "<div style='display: flex;'>...</div>"; // Broken!
//IronPDF- full support (modern Chromium)
var html = @"
<div style='display: flex; justify-content: space-between;'>
<div>Left</div>
<div>Right</div>
</div>";
var pdf = renderer.RenderHtmlAsPdf(html); // Works!
' DinkToPdf- doesn't work (wkhtmltopdf uses 2015 WebKit)
Dim html As String = "<div style='display: flex;'>...</div>" ' Broken!
' IronPDF- full support (modern Chromium)
Dim html As String = "
<div style='display: flex; justify-content: space-between;'>
<div>Left</div>
<div>Right</div>
</div>"
Dim pdf = renderer.RenderHtmlAsPdf(html) ' Works!
移行後のチェックリスト
コードの移行が完了したら、以下を確認してください:
- すべてのユニットテストを実行して、PDF生成が正しく機能することを確認します。
- マルチスレッドシナリオをテストする(
SynchronizedConverterパスは呼び出しをシリアライズし、負荷下でネイティブ側のクラッシュが発生しやすかった) - PDF出力品質を比較する(IronPDFのChromiumの方がレンダリング品質が良い)
- CSS レンダリングを検証します (Flexbox/Grid が動作するようになりました)
- JavaScript実行をテストする ( IronPDFで信頼性あり)
- CI/CD パイプラインを更新して wkhtmltopdf のインストールを削除します
- セキュリティスキャンのパスを検証する(CVE-2022-35583フラグはなくなりました)
- Docker/デプロイメント スクリプトからネイティブ バイナリ デプロイメントを削除する
その他のリソース
DinkToPdfからIronPDFへの移行により、未修正のwkhtmltopdf攻撃対象領域(CVE-2022-35583)、シリアライズされたSynchronizedConverter 並行処理モデル、ネイティブバイナリの展開、古いQtWebKitレンダリングパスを退役させます。 最新のChromiumエンジンへの移行は、完全なCSS3サポート、信頼性のあるJavaScript実行、および積極的に保守されているライブラリを提供します。

