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

Haukcode.DinkToPdfからIronPDFへの移行

Haukcode.DinkToPdf は、かつて人気があった DinkToPdf ライブラリの続編であり、wkhtmltopdf バイナリを使用して.NETアプリケーション用に HTML を PDF に変換します。 Haukcode.DinkToPdf は、元のプロジェクトが中断された後も.NET Coreに追従し続けましたが、上流の依存関係に起因する重大なセキュリティ問題を抱えています。 wkhtmltopdf プロジェクトは 2023 年 1 月にアーカイブされたため、これらの問題は解決されません。

このガイドでは、PDF 生成ワークフローからセキュリティ リスクを排除することを目指すプロ for .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.DinkToPdf IronPDF
基盤エンジン wkhtmltopdf(Qt WebKit ~2015) Chromium (定期的に更新)
セキュリティステータス CVE-2022-35583 (CRITICAL、未修正) 積極的にパッチを適用
プロジェクトステータス 放棄されたプロジェクトのフォーク 積極的に開発
HTML5/CSS3 制限的 サポート対象
JavaScript(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
Imports IronPdf
Imports IronPdf.Rendering
$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への変換

最も基本的な操作は、これら for .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);
    }
}
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 {
                    .HtmlContent = "<html><body><h1>Hello World</h1></body></html>"
                }
            }
        }

        Dim pdf As Byte() = converter.Convert(doc)
        File.WriteAllBytes("output.pdf", pdf)
    End Sub
End Module
$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");
    }
}
Imports IronPdf
Imports System.IO

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()

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

        pdf.SaveAs("output.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

Haukcode.DinkToPdf では、PdfTools を使用して SynchronizedConverter を作成し、ネストされた GlobalSettings および Objects を使用して HtmlToPdfDocument を構築し、HtmlContent を使用して ObjectSettings を追加し、生のバイトを取得するために converter.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);
    }
}
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
$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");
    }
}
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
$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);
    }
}
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.Letter,
                .Margins = New MarginSettings() With {.Top = 10, .Bottom = 10, .Left = 10, .Right = 10}
            },
            .Objects = {
                New ObjectSettings() With {
                    .HtmlContent = "<html><body><h1>Landscape Document</h1><p>Custom page settings</p></body></html>"
                }
            }
        }

        Dim pdf As Byte() = converter.Convert(doc)
        File.WriteAllBytes("landscape.pdf", pdf)
    End Sub
End Module
$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");
    }
}
Imports IronPdf
Imports IronPdf.Rendering

Class Program
    Shared Sub Main()
        Dim 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

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

        pdf.SaveAs("landscape.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

Haukcode.DinkToPdf は、別の MarginSettings オブジェクトを使用して、GlobalSettings 内に設定をネストします。IronPDFは、PaperOrientation のような明確な名前を持つ直接的な RenderingOptions プロパティと、個別の余白プロパティを提供します。

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

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

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

Haukcode.DinkToPdf IronPDF
SynchronizedConverter ChromePdfRenderer
BasicConverter ChromePdfRenderer
PdfTools 該当なし
IConverter 該当なし

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

Haukcode.DinkToPdf IronPDF
HtmlToPdfDocument メソッドコール
GlobalSettings RenderingOptions
ObjectSettings RenderingOptions
converter.Convert(doc) renderer.RenderHtmlAsPdf(html)

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

GlobalSettings プロパティ IronPDF プロパティ
ColorMode RenderingOptions.GrayScale
Orientation RenderingOptions.PaperOrientation
PaperSize RenderingOptions.PaperSize
Margins.Top RenderingOptions.MarginTop
Margins.Bottom RenderingOptions.MarginBottom
Margins.Left RenderingOptions.MarginLeft
Margins.Right RenderingOptions.MarginRight

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

オブジェクト設定プロパティ IronPDF 同等物
HtmlContent 最初のパラメータはRenderHtmlAsPdf()
Page (URL) renderer.RenderUrlAsPdf(url)
HeaderSettings.Right = "[page]" TextHeader.RightText = "{page}"

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

Haukcode.DinkToPdf IronPDF
[page] {page}
[toPage] {total-pages}
[date] {date}

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

課題 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!
' Before (DinkToPdf) - MUST be singleton
services.AddSingleton(GetType(IConverter), New SynchronizedConverter(New PdfTools()))

' After (IronPDF) - Can be singleton or transient (both work)
services.AddSingleton(Of IPdfService, IronPdfService)()
' Or services.AddTransient(Of IPdfService, IronPdfService)() - both are safe!
$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
Dim pdf = renderer.RenderHtmlAsPdf(html)
Dim bytes As Byte() = pdf.BinaryData  ' Get bytes
pdf.SaveAs("output.pdf")  ' Or save directly
$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}"
};
' Before (DinkToPdf)
HeaderSettings = New With {.Right = "Page [page] of [toPage]"}

' After (IronPDF)
renderer.RenderingOptions.TextHeader = New TextHeaderFooter With {
    .RightText = "Page {page} of {total-pages}"
}
$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 および ObjectSettings 構成を文書化します。 削除可能なネイティブライブラリのロードコードを特定する。

コード更新タスク

1.DinkToPdf NuGet パッケージの削除 2.IronPdf NuGetパッケージをインストールする

  1. 名前空間のインポートを DinkToPdf から IronPdf に更新します。
  2. SynchronizedConverterChromePdfRenderer に置き換えます。
  3. HtmlToPdfDocument パターンを直接メソッド呼び出しに変換する
  4. GlobalSettingsRenderingOptions に変換します。
  5. ObjectSettingsRenderingOptions に変換します。
  6. プレースホルダー構文を更新します ([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:複雑なドキュメント オブジェクトの構築の代わりに、直接メソッドを呼び出します (RenderUrlAsPdf())。

積極的な開発: .NET 10 と C# 14 の採用が 2026 年まで増加するにつれて、IronPDF の定期的な更新により、現在のおよび将来 for .NETバージョンとの互換性が確保されます。

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

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

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

アイアンサポートチーム

私たちは週5日、24時間オンラインで対応しています。
チャット
メール
電話してね