フッターコンテンツにスキップ
移行ガイド

Haukcode.DinkToPdfからIronPdfへの移行

Haukcode.DinkToPdfからIronPdfへの移行:完全なC#開発者ガイド

Haukcode.DinkToPdfは、.NETアプリケーションにHTMLからPDFへの変換機能を提供するwkhtmltopdfバイナリをラップした、以前人気のあったDinkToPdfライブラリのフォークです。 Haukcode.DinkToPdfは、オリジナルのDinkToPdfプロジェクトが停滞した後も.NET Coreとの互換性を維持していますが、上流の依存関係から重大なセキュリティ脆弱性を引き継いでいます。 基礎となるwkhtmltopdfプロジェクトは2023年1月にアーカイブされたため、これらの脆弱性にパッチが適用されることはありません。

このガイドでは、PDF生成ワークフローからセキュリティリスクを排除する必要のあるプロの.NET開発者のために、ステップバイステップの手順、コード比較、実用的な例を用いて、Haukcode.DinkToPdfからIronPDFへの完全な移行パスを提供します。

重大なセキュリティ警告:CVE-2022-35583

Haukcode.DinkToPdfには、修正不可能なwkhtmltopdfの重大なセキュリティ脆弱性が継承されています:

CVE-2022-35583 - 重大な SSRF の脆弱性 (CVSS 9.8)

wkhtmltopdfライブラリ(およびHaukcode.DinkToPdfを含むすべてのラッパー)は、Server-Side Request Forgery(SSRF)の脆弱性があります:

  • 攻撃ベクトル:悪意のあるHTMLコンテンツは、サーバに内部リソースをフェッチさせます。
  • AWSメタデータ攻撃http://169.254.169.254にアクセスしてAWSの認証情報を盗むことができる。
  • 内部ネットワークアクセス:内部サービスをスキャンしてアクセスできる
  • ローカルファイルのインクルードfile://プロトコル経由でローカルファイルを読み込むことができます。
  • インパクト:インフラストラクチャの完全な乗っ取りが可能

この脆弱性に対する修正はありません なぜならwkhtmltopdfは放棄され、2023年にアーカイブされたからです。最後のリリースは 2020 年のバージョン 0.12.6 です。

IronPDFvs Haukcode.DinkToPdf:機能比較

アーキテクチャの違いを理解することは、技術的な意思決定者が移行への投資を評価するのに役立ちます:

アスペクトHaukcode.DinkToPdfIronPDF
基盤エンジンwkhtmltopdf(Qt WebKit ~2015)Chromium (定期的に更新)
セキュリティステータスCVE-2022-35583 (CRITICAL、未修正)積極的にパッチを適用
プロジェクトステータス放棄されたプロジェクトのフォーク積極的に開発
HTML5/CSS3制限的フルサポート
JavaScript(ジャバスクリプト限定的で安全ではないフルV8エンジン
ネイティブバイナリ必須(プラットフォーム固有)自己完結型
スレッドセーフティシングルトンパターンが必要スレッドセーフ設計
サポートコミュニティ限定プロフェッショナルサポート
更新情報特になし定期リリース
ライセンスMIT (無料)無料トライアル付き商用

クイックスタート:Haukcode.DinkToPdfからIronPDFへの移行

これらの基本的なステップを踏めば、すぐにでも移行を開始できます。

ステップ 1: DinkToPdf とネイティブ バイナリを削除する。

Haukcode.DinkToPdf NuGetパッケージを削除してください:

# Remove NuGet packages
dotnet remove package DinkToPdf
dotnet remove package Haukcode.DinkToPdf
dotnet remove package Haukcode.WkHtmlToPdf-DotNet
# Remove NuGet packages
dotnet remove package DinkToPdf
dotnet remove package Haukcode.DinkToPdf
dotnet remove package Haukcode.WkHtmlToPdf-DotNet
SHELL

プロジェクトからネイティブバイナリを削除する:

  • <コード>libwkhtmltox.dll</コード> (Windows)
  • <コード>libwkhtmltox.so</コード> (Linux)
  • <コード>libwkhtmltox.dylib</コード> (macOS)

ステップ2: IronPDFをインストールする

# Install IronPDF
dotnet add package IronPdf
# Install IronPDF
dotnet add package IronPdf
SHELL

ステップ 3: 名前空間の更新

DinkToPdf名前空間をIronPdfに置き換えてください:

// Before (Haukcode.DinkToPdf)
using DinkToPdf;
using DinkToPdf.Contracts;

// After (IronPDF)
using IronPdf;
using IronPdf.Rendering;  // For RenderingOptions
// Before (Haukcode.DinkToPdf)
using DinkToPdf;
using DinkToPdf.Contracts;

// After (IronPDF)
using IronPdf;
using IronPdf.Rendering;  // For RenderingOptions
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

ステップ 4: ライセンスの初期化

アプリケーション起動時のライセンス初期化を追加します:

IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
$vbLabelText   $csharpLabel

コード移行の例

基本的なHTMLからPDFへの変換

最も基本的な操作は、これらの.NET PDFライブラリの複雑さの違いを明らかにします。

Haukcode.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 = "<html><body><h1>Hello World</h1></body></html>",
                }
            }
        };

        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 = "<html><body><h1>Hello World</h1></body></html>",
                }
            }
        };

        byte[] pdf = converter.Convert(doc);
        File.WriteAllBytes("output.pdf", pdf);
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

IronPDFのアプローチ:

// NuGet: Install-Package IronPdf
using IronPdf;
using System.IO;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        var pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Hello World</h1></body></html>");

        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System.IO;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        var pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Hello World</h1></body></html>");

        pdf.SaveAs("output.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Haukcode.DinkToPdfは、PdfToolsSynchronizedConverterを作成し、入れ子になったGlobalSettingsObjectsHtmlToPdfDocumentを構成し、HtmlContentObjectSettingsを追加し、converter.Convert()を呼び出す必要があります。Convert()を呼び出して生のバイトを取得し、File.WriteAllBytes()で手動でファイルに書き込む。

IronPDFはこれを3行に単純化します: ChromePdfRendererを作成し、RenderHtmlAsPdf()を呼び出し、組み込みのSaveAs()メソッドを使用します。

高度なHTMLからPDFへのシナリオについては、HTMLからPDFへの変換ガイドをご覧ください。

URLをPDFに変換する

URLからPDFへの変換でも、同様のパターンの違いが見られます。

Haukcode.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);
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

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");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Haukcode.DinkToPdfは、URLに対してObjectSettings.Pageと同じドキュメント構築パターンを使用します。 IronPDFは意図を明確に表現する専用のRenderUrlAsPdf()メソッドを提供します。

認証とカスタムヘッダーオプションについては、URL to PDF documentationを参照してください。

カスタムページ設定

方向、用紙サイズ、余白の設定には、さまざまなアプローチが必要です。

Haukcode.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.Letter,
                Margins = new MarginSettings() { Top = 10, Bottom = 10, Left = 10, Right = 10 }
            },
            Objects = {
                new ObjectSettings() {
                    HtmlContent = "<html><body><h1>Landscape Document</h1><p>Custom page settings</p></body></html>",
                }
            }
        };

        byte[] pdf = converter.Convert(doc);
        File.WriteAllBytes("landscape.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.Letter,
                Margins = new MarginSettings() { Top = 10, Bottom = 10, Left = 10, Right = 10 }
            },
            Objects = {
                new ObjectSettings() {
                    HtmlContent = "<html><body><h1>Landscape Document</h1><p>Custom page settings</p></body></html>",
                }
            }
        };

        byte[] pdf = converter.Convert(doc);
        File.WriteAllBytes("landscape.pdf", pdf);
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

IronPDFのアプローチ:

// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        renderer.RenderingOptions.PaperSize = PdfPaperSize.Letter;
        renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
        renderer.RenderingOptions.MarginTop = 10;
        renderer.RenderingOptions.MarginBottom = 10;
        renderer.RenderingOptions.MarginLeft = 10;
        renderer.RenderingOptions.MarginRight = 10;

        var pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Landscape Document</h1><p>Custom page settings</p></body></html>");

        pdf.SaveAs("landscape.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        renderer.RenderingOptions.PaperSize = PdfPaperSize.Letter;
        renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
        renderer.RenderingOptions.MarginTop = 10;
        renderer.RenderingOptions.MarginBottom = 10;
        renderer.RenderingOptions.MarginLeft = 10;
        renderer.RenderingOptions.MarginRight = 10;

        var pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Landscape Document</h1><p>Custom page settings</p></body></html>");

        pdf.SaveAs("landscape.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Haukcode.DinkToPdfは、GlobalSettings内の設定を、別のMarginSettingsオブジェクトでネストします。 IronPDFはPaperSizePaperOrientation、そして個々のマージンプロパティのような明確な名前のRenderingOptionsプロパティを直接提供します。

Haukcode.DinkToPdf APIからIronPdfへのマッピングリファレンス

このマッピングは、APIと同等のものを直接示すことで、移行を加速します:

コンバーター・クラスのマッピング

Haukcode.DinkToPdfIronPDFノート
SynchronizedConverter(シンクロナイズド・コンバーター<コード>ChromePdfRenderer</コードスレッドセーフ、シングルトン不要
<コード>BasicConverter</コード<コード>ChromePdfRenderer</コード同じクラスで両方を処理
<コード>PdfTools</コード該当なし不要
<コード>IConverter</コード該当なしレンダラーを直接使用する

ドキュメント構成マッピング

Haukcode.DinkToPdfIronPDFノート
<コード>HtmlToPdfDocument</コードメソッドコールRenderHtmlAsPdf()を直接使用してください。
<コード>グローバル設定</コード<コード>レンダリングオプション</コードレンダリング前の設定
<コード>オブジェクト設定</コード<コード>レンダリングオプション</コード1つにまとめる
converter.Convert(doc).renderer.RenderHtmlAsPdf(html).PdfDocument<//code> を返します。

GlobalSettingsプロパティのマッピング

GlobalSettings プロパティIronPDF プロパティノート
カラーモードRenderingOptions.GrayScale(レンダリングオプション.グレイスケールブール値、グレースケールにはtrueを設定します。
<コード>オリエンテーション</コード<コード>RenderingOptions.PaperOrientation</コードポートレートまたは風景
<コード>用紙サイズ</コード<コード>RenderingOptions.PaperSize</コードPdfPaperSize列挙型を使用してください。
<コード>マージン.トップ</コードRenderingOptions.MarginTop単位:ミリメートル
<コード>マージン.ボトム</コードRenderingOptions.MarginBottom単位:ミリメートル
<コード>マージン.左</コードRenderingOptions.MarginLeft(レンダリングオプション.マージンレフト)。単位:ミリメートル
<コード>マージン.Right</コード<コード>RenderingOptions.MarginRight</コード単位:ミリメートル

オブジェクト設定プロパティのマッピング

オブジェクト設定プロパティIronPDF 同等物ノート
<コード>HtmlContent</コードRenderHtmlAsPdf()の最初のパラメータ直接パラメータ
<コード>ページ</コード> (URL)renderer.RenderUrlAsPdf(url)のようにします。別メソッド
HeaderSettings.Right = "[ページ]"TextHeader.RightText = "{page}".さまざまなプレースホルダ構文

プレースホルダーの構文の移行

Haukcode.DinkToPdfIronPDFノート
<コード>[ページ]</コード<コード>{ページ}</コード現在のページ番号
<コード>[toPage]</コード<コード>{総ページ数}</コード総ページ数
<コード>[日付]</コード{date}<//code>現在の日付

一般的な移行の問題と解決策

課題 1: シングルトンの要件

Haukcode.DinkToPdf:ネイティブのwkhtmltopdfバイナリのスレッド安全性の問題のため、シングルトンとしてSynchronizedConverterを必要とします。

ソリューション: IronPDFのChromePdfRendererは設計上スレッドセーフです:

// Before (DinkToPdf) - MUST be singleton
services.AddSingleton(typeof(IConverter), new SynchronizedConverter(new PdfTools()));

// After (IronPDF) - Can be singleton or transient (both work)
services.AddSingleton<IPdfService, IronPdfService>();
// Or services.AddTransient<IPdfService, IronPdfService>() - both are safe!
// Before (DinkToPdf) - MUST be singleton
services.AddSingleton(typeof(IConverter), new SynchronizedConverter(new PdfTools()));

// After (IronPDF) - Can be singleton or transient (both work)
services.AddSingleton<IPdfService, IronPdfService>();
// Or services.AddTransient<IPdfService, IronPdfService>() - both are safe!
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

課題 2: ネイティブのバイナリ依存

Haukcode.DinkToPdf:プラットフォーム固有のネイティブライブラリ(libwkhtmltox.dll/so/dylib)が必要です。

ソリューション: IronPDFはネイティブバイナリに依存せず、自己完結しています。 移行後、これらのファイルを削除してください:

  • <コード>libwkhtmltox.dll</コード> (Windows)
  • <コード>libwkhtmltox.so</コード> (Linux)
  • <コード>libwkhtmltox.dylib</コード> (macOS)

課題3:リターン・タイプの違い

Haukcode.DinkToPdf: converter.Convert()byte[]を直接返します。

ソリューション: IronPDFは複数の出力オプションを持つPdfDocumentオブジェクトを返します:

var pdf = renderer.RenderHtmlAsPdf(html);
byte[] bytes = pdf.BinaryData;  // Get bytes
pdf.SaveAs("output.pdf");       // Or save directly
var pdf = renderer.RenderHtmlAsPdf(html);
byte[] bytes = pdf.BinaryData;  // Get bytes
pdf.SaveAs("output.pdf");       // Or save directly
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

課題4:ヘッダー/フッターのプレースホルダーの構文

Haukcode.DinkToPdf:[page][toPage]のような角括弧構文を使用します。

解決策: IronPDFの中括弧プレースホルダーを更新しました:

// Before (DinkToPdf)
HeaderSettings = { Right = "Page [page] of [toPage]" }

// After (IronPDF)
renderer.RenderingOptions.TextHeader = new TextHeaderFooter
{
    RightText = "Page {page} of {total-pages}"
};
// Before (DinkToPdf)
HeaderSettings = { Right = "Page [page] of [toPage]" }

// After (IronPDF)
renderer.RenderingOptions.TextHeader = new TextHeaderFooter
{
    RightText = "Page {page} of {total-pages}"
};
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Haukcode.DinkToPdf移行チェックリスト

マイグレーション前のタスク

コードベースを監査して、DinkToPdf の使用状況をすべて確認してください:

# Find DinkToPdf namespace usage
grep -r "using DinkToPdf\|using Haukcode" --include="*.cs" .

# Find converter usage
grep -r "SynchronizedConverter\|BasicConverter\|HtmlToPdfDocument" --include="*.cs" .

# Find native library loading
grep -r "wkhtmltopdf\|libwkhtmltox" --include="*.cs" --include="*.csproj" .

# Find GlobalSettings/ObjectSettings usage
grep -r "GlobalSettings\|ObjectSettings\|MarginSettings" --include="*.cs" .
# Find DinkToPdf namespace usage
grep -r "using DinkToPdf\|using Haukcode" --include="*.cs" .

# Find converter usage
grep -r "SynchronizedConverter\|BasicConverter\|HtmlToPdfDocument" --include="*.cs" .

# Find native library loading
grep -r "wkhtmltopdf\|libwkhtmltox" --include="*.cs" --include="*.csproj" .

# Find GlobalSettings/ObjectSettings usage
grep -r "GlobalSettings\|ObjectSettings\|MarginSettings" --include="*.cs" .
SHELL

現在の GlobalSettings<//code> と ObjectSettings<//code> の設定を文書化します。 削除可能なネイティブライブラリのロードコードを特定する。

コード更新タスク

1.DinkToPdf NuGet パッケージの削除 2.IronPdf NuGetパッケージをインストールする 3.名前空間のインポートをDinkToPdfからIronPdfに更新してください。 4.SynchronizedConverterChromePdfRendererに置き換えてください。 5.HtmlToPdfDocumentパターンを直接メソッド呼び出しに変換する 6.GlobalSettingsRenderingOptionsに変換してください。 7.ObjectSettings<//code> を RenderingOptions<//code> に変換してください。 8.プレースホルダの構文を更新 ([page]{page},<コード>[toPage]</コード→ {total-pages}) 9.起動時にIronPDFライセンスの初期化を追加する

インフラストラクチャのクリーンアップタスク

1.ネイティブバイナリの削除 (libwkhtmltox.*) 2.ネイティブライブラリの読み込みコードを削除 3.CustomAssemblyLoadContextが存在する場合は削除してください。 4.依存性注入の更新(シングルトンは不要になりました) 5.ネイティブバイナリのプラットフォーム検出コードの削除

移行後のテスト

移行後、これらの点を検証してください:

  • HTMLからPDFへの変換テスト
  • URLからPDFへの変換テスト
  • ページ設定の確認(サイズ、向き、余白)
  • プレースホルダーでヘッダーとフッターを確認する
  • 実際のHTMLテンプレートでテスト
  • 負荷テスト

IronPDFに移行する主な利点

Haukcode.DinkToPdfからIronPDFに移行することで、いくつかの重要な利点が得られます:

セキュリティ: CVE-2022-35583 (SSRF) および、パッチが適用されることのない他のwkhtmltopdfの脆弱性を排除します。

最新のレンダリングエンジン:2015 年に放棄された Qt WebKit の代わりに、積極的に更新された Chromium を使用します。HTML5、CSS3、JavaScript をフルサポート。

ネイティブバイナリなし:自己完結型のライブラリで、プラットフォーム固有のDLLを管理する必要がありません。 Windows、Linux、macOSへの展開を簡素化します。

スレッドセーフ: シングルトン要件はありません。ChromePdfRendererは、リクエストごとのインスタンス化を含め、どのようなパターンでも自由に使用できます。

よりシンプルなAPI:複雑なドキュメントオブジェクトの構築の代わりに、直接的なメソッド呼び出し(RenderHtmlAsPdf()RenderUrlAsPdf())。

アクティブ開発:2026年まで.NET 10とC# 14の採用が増加する中、IronPDFの定期的なアップデートは現在と将来の.NETバージョンとの互換性を保証します。

結論

Haukcode.DinkToPdfは、wkhtmltopdfベースのPDF生成のための.NET Core互換性を維持し、DinkToPdfプロジェクトの継続として機能しました。 しかし、基礎となるwkhtmltopdfバイナリは2023年にアーカイブされ、CVE-2022-35583のような重大なセキュリティ脆弱性が永久にパッチされないままになっている。 毎日アプリケーションがHaukcode.DinkToPdfを使い続けることで、インフラはSSRF攻撃のリスクにさらされ続けます。

IronPdfは最新のウェブ標準を扱うChromiumレンダリングエンジンを搭載し、現代的で安全な代替手段を提供します。 DinkToPdfのパッケージとネイティブ・バイナリを削除し、ドキュメントの作成を直接レンダリングする方法に置き換え、プレースホルダーの構文を更新します。

IronPDFの無料トライアルで今すぐ移行を開始し、wkhtmltopdfベースのソリューションに内在するセキュリティの脆弱性を排除しましょう。

包括的な実装ガイダンスについては、IronPDFドキュメントチュートリアルをご覧ください。

カーティス・チャウ
テクニカルライター

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

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。