C#で火PechkinからIronPDFに移行する方法
TuesPechkin は、wkhtmltopdfライブラリのスレッドセーフなラッパーとして機能し、.NET開発者がHTMLをPDFに変換するのを何年も支援してきました。 しかし、基礎となるwkhtmltopdf技術は2015年を最後に更新されず、2022年12月に正式に放棄されました。このため、開発チームがもはや無視できない重大なセキュリティ、安定性、レンダリングの制限が生じています。
このガイドでは、.NET開発者が移行を検討するために、ステップバイステップの手順、コード比較、実用的な例を用いて、TuesPechkinからIronPDFへの完全な移行パスを提供します。
なぜ今TuesuesPechkinから移行するのか
セキュリティを重視する開発チームにとって、TuesPechkinからの移行はもはやオプションではありません。 基礎となるwkhtmltopdfライブラリには、パッチが適用されていない重大な脆弱性があり、今後も修正されることはないでしょう。
重大なセキュリティ脆弱性:CVE-2022-35583
| 属性 | 価値 |
|---|---|
| CVE ID | CVE-2022-35583 |
| 厳しさ | 重要(9.8/10)。 |
| アタックベクター | ネットワーク |
| ステータス | パッチは適用されません。 |
| 影響を受ける言語 | すべての火曜日Pechkinバージョン |
wkhtmltopdfのメンテナは、セキュリティの脆弱性を修正しないと明言しています。火曜日を使用するすべてのアプリケーションは、Server-Side Request Forgery (SSRF) 攻撃に永久にさらされます。
攻撃の仕組み
ユーザーが提供したHTMLを処理する際、攻撃者は悪意のあるコンテンツを注入することができます:
<iframe src="http://169.254.169.254/latest/meta-data/iam/security-credentials/"></iframe>
<img src="http://internal-admin-panel:8080/api/users?export=all" />
<iframe src="http://169.254.169.254/latest/meta-data/iam/security-credentials/"></iframe>
<img src="http://internal-admin-panel:8080/api/users?export=all" />
これにより、攻撃者はAWS/Azure/GCPのメタデータエンドポイントにアクセスし、内部APIデータを盗み、内部ネットワークをポートスキャンし、機密設定を流出させることができます。
テクノロジーの危機
tuespechkinは、Qt WebKit 4.8を使用するwkhtmltopdfをラップしています。 これにより、以下が実現されます。
- Flexboxをサポートしていません
- CSSグリッドのサポートなし
- 壊れたJavaScriptの実行
- ES6+はサポートしません。
安定性の危機
宣伝されているThreadSafeConverterでも、TuesPechkinは高負荷時にクラッシュします:
// ❌火曜日- "ThreadSafeConverter" still crashes
var converter = new TuesPechkin.ThreadSafeConverter(
new TuesPechkin.RemotingToolset<PechkinBindings>());
// Under high load, you'll see:
// System.AccessViolationException: Attempted to read or write protected memory
// Process terminated unexpectedly
// Converter hangs indefinitely
// ❌火曜日- "ThreadSafeConverter" still crashes
var converter = new TuesPechkin.ThreadSafeConverter(
new TuesPechkin.RemotingToolset<PechkinBindings>());
// Under high load, you'll see:
// System.AccessViolationException: Attempted to read or write protected memory
// Process terminated unexpectedly
// Converter hangs indefinitely
Imports TuesPechkin
' ❌火曜日- "ThreadSafeConverter" still crashes
Dim converter = New ThreadSafeConverter(New RemotingToolset(Of PechkinBindings)())
' Under high load, you'll see:
' System.AccessViolationException: Attempted to read or write protected memory
' Process terminated unexpectedly
' Converter hangs indefinitely
IronPDFとTuesPechkinの比較:機能の比較
アーキテクチャの違いを理解することは、技術的な意思決定者が移行への投資を評価するのに役立ちます:
| フィーチャー | 火曜日 | IronPDF |
|---|---|---|
| ライセンス | フリー(MITライセンス) | 商用 |
| スレッドセーフティ | マニュアル管理が必要 | ネイティブサポート |
| 通貨について | 制限あり、負荷でクラッシュする可能性あり | 堅牢で、高い並行性に対応 |
| 開発分野 | 2015年最終更新 | 積極的かつ継続的な改善 |
| 使いやすさ | 複雑なセットアップ | ユーザーフレンドリーなガイド |
| ドキュメント | 基本 | 豊富な例文 |
| セキュリティ。 | ❌ 重大な CVEs | ✅ 既知の脆弱性はありません。 |
| HTMLからPDFへ | ⚠️ 時代遅れの WebKit | ✅ モダンChromium |
| CSS3について | ❌ 部分的 | 対応言語 |
| フレックスボックス/グリッド | ❌ 未対応 | 対応言語 |
| JavaScript(JavaScript | ⚠️ 信頼できない | ✅ ES6+のフルバージョン |
| PDF操作 | ❌ 利用不可 | フル |
| デジタル署名。 | ❌ 利用不可 | フル |
| PDF/Aコンプライアンス | ❌ 利用不可 | フル |
| フォーム入力 | ❌ 利用不可 | フル |
| ウォーターマーク。 | ❌ 利用不可 | フル |
| マージ/スプリット | ❌ 利用不可 | フル |
クイックスタートTuesPechkinからIronPDFへの移行
これらの基本的なステップを踏めば、すぐにでも移行を開始できます。
ステップ 1: NuGet パッケージを置き換える
すべての火曜日パッケージを削除します:
# Remove火曜日and all related packages
dotnet remove package TuesPechkin
dotnet remove package TuesPechkin.Wkhtmltox.Win64
dotnet remove package TuesPechkin.Wkhtmltox.Win32
# Remove火曜日and all related packages
dotnet remove package TuesPechkin
dotnet remove package TuesPechkin.Wkhtmltox.Win64
dotnet remove package TuesPechkin.Wkhtmltox.Win32
IronPDFをインストールします:
# Install IronPDF
dotnet add package IronPdf
# Install IronPDF
dotnet add package IronPdf
ステップ 2: ネイティブ バイナリの削除
プロジェクトからこれらのファイルとフォルダを削除してください:
wkhtmltox.dllwkhtmltopdf.exe- 任意の
wkhtmlto*ファイル TuesPechkin.Wkhtmltoxフォルダ
ステップ 3: 名前空間の更新
TuesPechkin名前空間をIronPdf名前空間に置き換えてください:
// Before (TuesPechkin)
using TuesPechkin;
using TuesPechkin.Wkhtmltox.Win64;
// After (IronPDF)
using IronPdf;
// Before (TuesPechkin)
using TuesPechkin;
using TuesPechkin.Wkhtmltox.Win64;
// After (IronPDF)
using IronPdf;
' Before (TuesPechkin)
Imports TuesPechkin
Imports TuesPechkin.Wkhtmltox.Win64
' After (IronPDF)
Imports IronPdf
ステップ 4: ライセンスの初期化
アプリケーション起動時のライセンス初期化を追加します:
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
コード移行の例
HTML を PDF に変換する
最も一般的な使用例は、これら for .NET PDFライブラリの複雑さの違いを示しています。
TuesPechkinのアプローチ:
// NuGet: Install-Package TuesPechkin
using TuesPechkin;
using System.IO;
class Program
{
static void Main()
{
var converter = new StandardConverter(
new RemotingToolset<PdfToolset>(
new Win64EmbeddedDeployment(
new TempFolderDeployment())));
string html = "<html><body><h1>Hello World</h1></body></html>";
byte[] pdfBytes = converter.Convert(new HtmlToPdfDocument
{
Objects = { new ObjectSettings { HtmlText = html } }
});
File.WriteAllBytes("output.pdf", pdfBytes);
}
}
// NuGet: Install-Package TuesPechkin
using TuesPechkin;
using System.IO;
class Program
{
static void Main()
{
var converter = new StandardConverter(
new RemotingToolset<PdfToolset>(
new Win64EmbeddedDeployment(
new TempFolderDeployment())));
string html = "<html><body><h1>Hello World</h1></body></html>";
byte[] pdfBytes = converter.Convert(new HtmlToPdfDocument
{
Objects = { new ObjectSettings { HtmlText = html } }
});
File.WriteAllBytes("output.pdf", pdfBytes);
}
}
Imports TuesPechkin
Imports System.IO
Class Program
Shared Sub Main()
Dim converter = New StandardConverter(
New RemotingToolset(Of PdfToolset)(
New Win64EmbeddedDeployment(
New TempFolderDeployment())))
Dim html As String = "<html><body><h1>Hello World</h1></body></html>"
Dim pdfBytes As Byte() = converter.Convert(New HtmlToPdfDocument With {
.Objects = {New ObjectSettings With {.HtmlText = html}}
})
File.WriteAllBytes("output.pdf", pdfBytes)
End Sub
End Class
IronPDFのアプローチ:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = "<html><body><h1>Hello World</h1></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = "<html><body><h1>Hello World</h1></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim html As String = "<html><body><h1>Hello World</h1></body></html>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
End Sub
End Class
TuesPechkin バージョンでは、複雑な初期化チェーン (Win64EmbeddedDeployment、および TempFolderDeployment) を持つ StandardConverter を作成する必要があります。 また、手動でバイトをファイルに書き込む必要があります。
IronPDFはこの儀式を完全に排除します。 ChromePdfRenderer を作成し、HTML をレンダリングして保存します。 コードは自己文書化されており、デプロイツールセットやプラットフォーム固有のバイナリ管理について理解する必要はありません。
高度なHTMLからPDFへのシナリオについては、HTMLからPDFへの変換ガイドをご覧ください。
URLをPDFに変換する
URLからPDFへの変換でも、同様の複雑さの違いが見られます。
TuesPechkinのアプローチ:
// NuGet: Install-Package TuesPechkin
using TuesPechkin;
using System.IO;
class Program
{
static void Main()
{
var converter = new StandardConverter(
new RemotingToolset<PdfToolset>(
new Win64EmbeddedDeployment(
new TempFolderDeployment())));
byte[] pdfBytes = converter.Convert(new HtmlToPdfDocument
{
Objects = {
new ObjectSettings {
PageUrl = "https://www.example.com"
}
}
});
File.WriteAllBytes("webpage.pdf", pdfBytes);
}
}
// NuGet: Install-Package TuesPechkin
using TuesPechkin;
using System.IO;
class Program
{
static void Main()
{
var converter = new StandardConverter(
new RemotingToolset<PdfToolset>(
new Win64EmbeddedDeployment(
new TempFolderDeployment())));
byte[] pdfBytes = converter.Convert(new HtmlToPdfDocument
{
Objects = {
new ObjectSettings {
PageUrl = "https://www.example.com"
}
}
});
File.WriteAllBytes("webpage.pdf", pdfBytes);
}
}
Imports TuesPechkin
Imports System.IO
Class Program
Shared Sub Main()
Dim converter = New StandardConverter(
New RemotingToolset(Of PdfToolset)(
New Win64EmbeddedDeployment(
New TempFolderDeployment())))
Dim pdfBytes As Byte() = converter.Convert(New HtmlToPdfDocument With {
.Objects = {
New ObjectSettings With {
.PageUrl = "https://www.example.com"
}
}
})
File.WriteAllBytes("webpage.pdf", pdfBytes)
End Sub
End Class
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
TuesPechkin は、HtmlToPdfDocument 内にネストされた ObjectSettings.PageUrl を使用します。IronPDFは、意図を明確に表現する専用の RenderUrlAsPdf メソッドを提供します。
認証とカスタムヘッダーオプションについては、URL to PDF documentationを参照してください。
カスタム レンダリング設定
ページの向き、用紙サイズ、余白には、さまざまな設定アプローチが必要です。
TuesPechkinのアプローチ:
// NuGet: Install-Package TuesPechkin
using TuesPechkin;
using System.IO;
class Program
{
static void Main()
{
var converter = new StandardConverter(
new RemotingToolset<PdfToolset>(
new Win64EmbeddedDeployment(
new TempFolderDeployment())));
string html = "<html><body><h1>Custom PDF</h1></body></html>";
var document = new HtmlToPdfDocument
{
GlobalSettings = {
Orientation = GlobalSettings.PdfOrientation.Landscape,
PaperSize = GlobalSettings.PdfPaperSize.A4,
Margins = new MarginSettings { Unit = Unit.Millimeters, Top = 10, Bottom = 10 }
},
Objects = {
new ObjectSettings { HtmlText = html }
}
};
byte[] pdfBytes = converter.Convert(document);
File.WriteAllBytes("custom.pdf", pdfBytes);
}
}
// NuGet: Install-Package TuesPechkin
using TuesPechkin;
using System.IO;
class Program
{
static void Main()
{
var converter = new StandardConverter(
new RemotingToolset<PdfToolset>(
new Win64EmbeddedDeployment(
new TempFolderDeployment())));
string html = "<html><body><h1>Custom PDF</h1></body></html>";
var document = new HtmlToPdfDocument
{
GlobalSettings = {
Orientation = GlobalSettings.PdfOrientation.Landscape,
PaperSize = GlobalSettings.PdfPaperSize.A4,
Margins = new MarginSettings { Unit = Unit.Millimeters, Top = 10, Bottom = 10 }
},
Objects = {
new ObjectSettings { HtmlText = html }
}
};
byte[] pdfBytes = converter.Convert(document);
File.WriteAllBytes("custom.pdf", pdfBytes);
}
}
Imports TuesPechkin
Imports System.IO
Module Program
Sub Main()
Dim converter = New StandardConverter(
New RemotingToolset(Of PdfToolset)(
New Win64EmbeddedDeployment(
New TempFolderDeployment())))
Dim html As String = "<html><body><h1>Custom PDF</h1></body></html>"
Dim document = New HtmlToPdfDocument With {
.GlobalSettings = New GlobalSettings With {
.Orientation = GlobalSettings.PdfOrientation.Landscape,
.PaperSize = GlobalSettings.PdfPaperSize.A4,
.Margins = New MarginSettings With {.Unit = Unit.Millimeters, .Top = 10, .Bottom = 10}
},
.Objects = {
New ObjectSettings With {.HtmlText = html}
}
}
Dim pdfBytes As Byte() = converter.Convert(document)
File.WriteAllBytes("custom.pdf", pdfBytes)
End Sub
End Module
IronPDFのアプローチ:
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Engines.Chrome;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 10;
renderer.RenderingOptions.MarginBottom = 10;
string html = "<html><body><h1>Custom PDF</h1></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("custom.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Engines.Chrome;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 10;
renderer.RenderingOptions.MarginBottom = 10;
string html = "<html><body><h1>Custom PDF</h1></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("custom.pdf");
}
}
Imports IronPdf
Imports IronPdf.Engines.Chrome
Imports System
Module Program
Sub Main()
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.MarginTop = 10
renderer.RenderingOptions.MarginBottom = 10
Dim html As String = "<html><body><h1>Custom PDF</h1></body></html>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("custom.pdf")
End Sub
End Module
TuesPechkin は、設定をドキュメント全体のオプションの GlobalSettings とコンテンツの ObjectSettings に分割しています。IronPDFは、すべてを明確で見つけやすいプロパティ名で RenderingOptions に統合します。
TuesPechkinAPIからIronPDFへのマッピングリファレンス
このマッピングは、APIと同等のものを直接示すことで、移行を加速します:
| 火曜日 | IronPDF |
|---|---|
StandardConverter |
ChromePdfRenderer |
ThreadSafeConverter |
ChromePdfRenderer |
HtmlToPdfDocument |
メソッドのパラメータ |
GlobalSettings |
RenderingOptions |
ObjectSettings.HtmlText |
RenderHtmlAsPdf(html) |
ObjectSettings.PageUrl |
RenderUrlAsPdf(url) |
GlobalSettings.PaperSize |
RenderingOptions.PaperSize |
GlobalSettings.Orientation |
RenderingOptions.PaperOrientation |
MarginSettings |
MarginBottom など |
[page] プレースホルダー |
{page} プレースホルダー |
[toPage] プレースホルダー |
{total-pages} プレースホルダー |
RemotingToolset |
不要 |
Win64EmbeddedDeployment |
不要 |
TempFolderDeployment |
不要 |
一般的な移行の問題と解決策
課題1: 複雑な初期化コード
問題: TuesPechkinは、デプロイツールセットによる複雑なコンバーターのセットアップを必要とします。
ソリューション: IronPDFはシンプルです:
// Before (TuesPechkin)
var converter = new StandardConverter(
new RemotingToolset<PdfToolset>(
new Win64EmbeddedDeployment(
new TempFolderDeployment())));
// After (IronPDF)
var renderer = new ChromePdfRenderer();
// That's it!
// Before (TuesPechkin)
var converter = new StandardConverter(
new RemotingToolset<PdfToolset>(
new Win64EmbeddedDeployment(
new TempFolderDeployment())));
// After (IronPDF)
var renderer = new ChromePdfRenderer();
// That's it!
' Before (TuesPechkin)
Dim converter = New StandardConverter(
New RemotingToolset(Of PdfToolset)(
New Win64EmbeddedDeployment(
New TempFolderDeployment())))
' After (IronPDF)
Dim renderer = New ChromePdfRenderer()
' That's it!
問題 2: スレッドセーフティのクラッシュ
問題:火曜日の ThreadSafeConverter は、高負荷時には AccessViolationException で依然としてクラッシュします。
ソリューション: IronPDFはネイティブのスレッドセーフを備えています:
//IronPDFis inherently thread-safe
var renderer = new ChromePdfRenderer();
// Use from any thread without crashes
//IronPDFis inherently thread-safe
var renderer = new ChromePdfRenderer();
// Use from any thread without crashes
'IronPDF is inherently thread-safe
Dim renderer As New ChromePdfRenderer()
' Use from any thread without crashes
課題3: ページ番号のプレースホルダーの構文
問題:火曜日は [page] および [toPage] プレースホルダーを使用します。
解決策: IronPDFのプレースホルダー構文を更新しました:
// Before (TuesPechkin)
"Page [page] of [toPage]"
// After (IronPDF)
"Page {page} of {total-pages}"
// Before (TuesPechkin)
"Page [page] of [toPage]"
// After (IronPDF)
"Page {page} of {total-pages}"
課題4: CSSレイアウトが壊れています
問題:wkhtmltopdfがQt WebKit 4.8を使用しているため、FlexboxとGridレイアウトがTuesPechkinで動作しません。
ソリューション: IronPDFで適切なモダンCSSを使用してください:
// Remove table-based workarounds, use modern CSS
var html = @"
<div style='display: flex; justify-content: space-between;'>
<div>Left</div>
<div>Right</div>
</div>";
var pdf = renderer.RenderHtmlAsPdf(html);
// Works correctly with Chromium!
// Remove table-based workarounds, use modern CSS
var html = @"
<div style='display: flex; justify-content: space-between;'>
<div>Left</div>
<div>Right</div>
</div>";
var pdf = renderer.RenderHtmlAsPdf(html);
// Works correctly with Chromium!
' Remove table-based workarounds, use modern CSS
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 correctly with Chromium!
第5号:ネイティブ・バイナリ管理
問題 TuesPechkinは、プラットフォーム固有のwkhtmltopdfバイナリとパス設定を必要とします。
ソリューション: IronPDFはNuGetを通してすべての依存関係を処理します:
# Just install the package
dotnet add package IronPdf
# No wkhtmltopdf binaries needed
# Just install the package
dotnet add package IronPdf
# No wkhtmltopdf binaries needed
TuesPechkin移行チェックリスト
マイグレーション前のタスク
コードベースを監査し、すべてのTuesPechkinの使用法を特定します:
grep -r "using TuesPechkin" --include="*.cs" .
grep -r "ThreadSafeConverter\|RemotingToolset" --include="*.cs" .
grep -r "using TuesPechkin" --include="*.cs" .
grep -r "ThreadSafeConverter\|RemotingToolset" --include="*.cs" .
現在の GlobalSettings 構成 (用紙サイズ、方向、余白) を文書化します。 構成 (HTML コンテンツ、URL) をドキュメント化します。 変換のためのヘッダー/フッター実装を特定する。 すべてのwkhtmltopdfバイナリを検索して削除してください。
コード更新タスク
1.TuesPechkin NuGet パッケージの削除 2.wkhtmltopdfネイティブバイナリの削除 3.IronPdf NuGetパッケージをインストールする
- ステートメントを使用して、
TuesPechkinからIronPdfに更新します。 5.起動時のライセンスキー初期化の追加 - コンバーターを
ChromePdfRendererに置き換えます GlobalSettingsをRenderingOptionsに変換します。ObjectSettingsをメソッドパラメータに変換する 9.個々のプロパティへのマージン設定の更新- ヘッダー/フッター構文をHTMLベースに更新します
HtmlHeaderFooter - ページプレースホルダー構文を修正 (
[page]→{page}) 12.すべてのデプロイメント/ツールセットコードを削除する
移行後のテスト
移行後、これらの点を検証してください:
- すべてのユニットテストを実行する
- スレッドセーフなシナリオをテストする(IronPDFはクラッシュすることなくマルチスレッドに対応します)
- PDF出力品質の比較(Chromiumの方が正確にレンダリングされる)
- CSSレンダリングの検証(FlexboxとGridが動作するようになりました)
- JavaScriptの実行テスト(ES6+に対応しました)
- ヘッダー/フッターレンダリングのテスト
- パフォーマンステストのバッチ操作
- wkhtmltopdfバイナリが残っていないことを確認するためのセキュリティスキャン
IronPDFに移行する主な利点
TuespechkinからIronPDFに移行することで、いくつかの重要な利点が得られます:
セキュリティ:CVE-2022-35583およびその他の wkhtmltopdf の脆弱性が排除されました。 IronPdfのChromiumエンジンは定期的にセキュリティアップデートを受けています。
ネイティブ スレッド セーフティ:複雑な ThreadSafeConverter 構成は不要になりました。 負荷がかかっても AccessViolationException がクラッシュしなくなりました。 IronPdfは自動的に並行処理を行います。
最新のレンダリング エンジン: CSS3、Flexbox、Grid、ES6 + JavaScript を完全にサポートします。 PDFは、モダンブラウザで表示されるコンテンツとまったく同じようにレンダリングされます。
簡素化された展開:プラットフォーム固有のバイナリを管理する必要はありません。 Win64EmbeddedDeployment、または TempFolderDeployment の儀式はありません。 NuGetパッケージをインストールするだけです。
積極的な開発: .NET 10 と C# 14 の採用が 2026 年まで増加するにつれて、IronPDF の定期的な更新により、現在のおよび将来 for .NETバージョンとの互換性が確保されます。
拡張機能:火曜日は HTML を PDF にのみ変換します。 IronPdfはPDF操作、電子署名、PDF/Aコンプライアンス、フォーム入力、透かし、結合/分割操作を追加します。

