IRONSOFTWAREHOME
ビデオ

IronPDF 2021: Chrome Rendering Engine EAP – PDF生成のゲームチェンジャー!

Curtis Chau
Curtis Chau
Updated: 2026年7月19日

DinkToPdfはwkhtmltopdfをラップし、そのセキュリティの脆弱性と技術的な制限をすべて受け継いでいます。 これらの問題を理解することは、移行の緊急性を評価する上で非常に重要です。

重大なセキュリティ問題

DinkToPdf は wkhtmltopdf から未適用のセキュリティアドバイザリーを引き継ぎます:

  1. CVE-2022-35583 (SSRF): wkhtmltopdf 0.12.6 に対するサーバーサイドリクエストフォージェリーアドバイザリー (NVD の CVSS 9.8; 上流プロジェクトによって、ライブラリのバグではなくアプリケーション側の入力サニタイズ問題として異議が唱えられています。) どちらにせよ修正されることはありません。
  2. アーカイブされたプロジェクト: wkhtmltopdf/wkhtmltopdf リポジトリは2023年1月2日にアーカイブされ、wkhtmltopdf GitHub組織全体は2024年7月10日にアーカイブされました。
  3. 今後のセキュリティパッチなし: 既知または将来の脆弱性は上流で修正されません。

技術的な問題

問題インパクト
スレッドセーフティBasicConverter はシングルスレッドのみです; SynchronizedConverter は呼び出しをシリアライズし、負荷下でネイティブ側のクラッシュにまだ見舞われる可能性があります
ネイティブバイナリプラットフォーム固有のlibwkhtmltox バイナリを使用した複雑な展開
CSSの制限事項古い QtWebKit のフォーク — 現代のフレックスボックス/グリッドレイアウトサポートなし
JavaScript(JavaScript一貫性のない実行、タイムアウト
レンダリング旧式の QtWebKit ベースエンジン (wkhtmltopdf 0.12.6、最終リリースは2020年6月)
メンテナンスDinkToPdf 1.0.8 最後のリリースは 2017年4月18日に NuGet で

アーキテクチャの比較

アスペクトDinkToPdfIronPDF
セキュリティ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月にアーカイブされました積極的なメンテナンス

機能比較

フィーチャーDinkToPdfIronPDF
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*"
SHELL

予想される画期的な変更

変更DinkToPdfIronPDFインパクト
コンバーターSynchronizedConverter(new PdfTools())ChromePdfRendererよりシンプルなインスタンス化
ドキュメントHtmlToPdfDocument直接メソッド呼び出しドキュメントオブジェクトなし
設定GlobalSettings + ObjectSettingsRenderingOptions単一オプションオブジェクト
リターンタイプbyte[]PdfDocumentより強力なオブジェクト
バイナリlibwkhtmltox.dll/soなし(マネージド)ネイティブファイルの削除
スレッドセーフBasicConverter シングルスレッド; SynchronizedConverter はシリアライズしますデフォルトでスレッドセーフよりシンプルなコード
DIシングルトン必須生涯柔軟性

ステップごとの移行プロセス

ステップ 1: NuGet パッケージを更新する

DinkToPdfを削除し、IronPDFをインストールしてください:

# Remove DinkToPdf
dotnet remove package DinkToPdf

# Install IronPDF
dotnet add package IronPdf
SHELL

ステップ 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;

ステップ 4: ライセンスの設定

// Add at application startup (Program.cs or Global.asax)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

完全な API 移行のリファレンス

コア クラス マッピング

DinkToPdfIronPDF
SynchronizedConverterChromePdfRenderer
BasicConverterChromePdfRenderer
PdfTools不要
HtmlToPdfDocument不要
GlobalSettingsRenderingOptions
ObjectSettingsRenderingOptions
MarginSettings個々のマージン特性

グローバル設定のマッピング

DinkToPdf グローバル設定IronPDF 同等物
ColorMode = ColorMode.Colorデフォルト(常にカラー)
Orientation = Orientation.PortraitPaperOrientation = PdfPaperOrientation.Portrait
Orientation = Orientation.LandscapePaperOrientation = PdfPaperOrientation.Landscape
PaperSize = PaperKind.A4PaperSize = PdfPaperSize.A4
Margins = new MarginSettings()個々のマージン特性

マージン設定のマッピング

DinkToPdf のマージンIronPDF 同等物
Margins.Top = 10MarginTop = 10
Margins.Bottom = 10MarginBottom = 10
Margins.Left = 15MarginLeft = 15
Margins.Right = 15MarginRight = 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);
    }
}

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");
    }
}

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);
    }
}

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");
    }
}

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);
    }
}

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");
    }
}

IronPDFのRenderingOptions は、GlobalSettingsMarginSettings の両方を統一された流暢なAPIに置き換えます。 その他の設定オプションについては、rendering options documentationを参照してください。

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

ネイティブ バイナリの削除

最も重要なクリーンアップステップは、wkhtmltopdfネイティブバイナリを削除することです。 IronPDFにはネイティブの依存関係はありません:

# Delete native binaries
rm libwkhtmltox.* 2>/dev/null
SHELL

シングルトンは必要ありません

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();
C#

リチャーリターンタイプ

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");

完全な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!

移行後のチェックリスト

コードの移行が完了したら、以下を確認してください:

  • すべてのユニットテストを実行して、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実行、および積極的に保守されているライブラリを提供します。

ご注意: DinkToPdfとwkhtmltopdfはそれぞれの所有者の登録商標です。 このサイトはDinkToPdfまたはwkhtmltopdfと提携、支持、またはスポンサーされていません。 すべての製品名、ロゴ、およびブランドは各所有者の所有物です。 比較は情報提供のみを目的としており、執筆時点で公開されている情報を反映しています。
Curtis Chau
テクニカルライター

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

...
詳しく読む

関連する記事

Key in blue circle

無料の30日間トライアルキーをすぐに入手してください。

Your trial license will be sent to your email address

制限なし。100% ロック解除済み。クレジットカード不要。

bullet_checkedクレジットカードやアカウントの作成は不要です。制限なし。100% ロック解除済み。クレジットカード不要。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
無料のライブデモを予約する
Booking Badge

世界中の数百万人のエンジニアから信頼されています。

ライセンスはより安く
義務のない相談を受ける
下記のフォームを記入するか、sales@ironsoftware.comにメールしてください。
あなたの詳細は常に守秘されます。
世界中の数百万人のエンジニアから信頼されています。
ライセンスはより安く
あなたの無料30日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。