フッターコンテンツにスキップ
ビデオ

PDF内のテキストを置換する方法 | IronPDF

TuesPechkinは長年にわたり.NET開発者がHTMLをPDFに変換する際に役立つ、安全なスレッド処理のラッパーとしてwkhtmltopdfネイティブバイナリを包んできました。 しかし、基礎となるwkhtmltopdfプロジェクトは2023年1月にGitHubでアーカイブされ、それが依存するWebKitフォークは2015年頃のものです。これは開発チームが無視できなくなったセキュリティ、安定性、およびレンダリングの制限を生み出しています。

このガイドでは、.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" />
HTML

これにより、攻撃者は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
$vbLabelText   $csharpLabel

IronPDFとTuesPechkinの比較:機能の比較

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

フィーチャー 火曜日 IronPDF
ライセンス 無料、オープンソース 商用
スレッドセーフティ マニュアル管理が必要 ネイティブサポート
通貨について 制限あり、負荷でクラッシュする可能性あり 堅牢で、高い並行性に対応
開発分野 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
SHELL

IronPDFをインストールします:

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

ステップ 2: ネイティブ バイナリの削除

プロジェクトからこれらのファイルとフォルダを削除してください:

  • wkhtmltox.dll
  • wkhtmltopdf.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
$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ライブラリの複雑さの違いを示しています。

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

TuesPechkinのバージョンでは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
$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

TuesPechkinはObjectSettings.PageUrlをネストしています。 IronPDFは意図を明示する専用のRenderUrlAsPdfメソッドを提供します。

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

カスタム レンダリング設定

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

TuesPechkinのアプローチ:

// NuGet: Install-Package TuesPechkin
// NuGet: Install-Package TuesPechkin.Wkhtmltox.Win64
using TuesPechkin;
using System.Drawing.Printing;
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.PaperOrientation.Landscape,
                PaperSize = PaperKind.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
// NuGet: Install-Package TuesPechkin.Wkhtmltox.Win64
using TuesPechkin;
using System.Drawing.Printing;
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.PaperOrientation.Landscape,
                PaperSize = PaperKind.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.Drawing.Printing
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.PaperOrientation.Landscape,
                .PaperSize = PaperKind.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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

TuesPechkinは設定を文書全体のオプションのための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!
$vbLabelText   $csharpLabel

問題 2: スレッドセーフティのクラッシュ

問題: 高負荷時にTuesPechkinの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
$vbLabelText   $csharpLabel

課題3: ページ番号のプレースホルダーの構文

問題: TuesPechkinは[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}"
' Before (TuesPechkin)
"Page [page] of [topage]"

' After (IronPDF)
"Page {page} of {total-pages}"
$vbLabelText   $csharpLabel

課題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!
$vbLabelText   $csharpLabel

第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
SHELL

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" .
SHELL

現在のGlobalSettingsの設定(用紙サイズ、向き、余白)を文書化します。 ObjectSettingsの設定(HTMLコンテンツ、URL)を文書化します。 変換のためのヘッダー/フッター実装を特定する。 すべてのwkhtmltopdfバイナリを検索して削除してください。

コード更新タスク

1.TuesPechkin NuGet パッケージの削除 2.wkhtmltopdfネイティブバイナリの削除 3.IronPDFNuGet パッケージをインストールします

  1. IronPdfへusingステートメントを更新します。 5.起動時のライセンスキー初期化の追加
  2. コンバーターをChromePdfRendererに置き換えます。
  3. RenderingOptionsに変換します。
  4. ObjectSettingsをメソッドパラメーターに変換します。 9.個々のプロパティへのマージン設定の更新
  5. ヘッダー/フッターの構文をHTMLベースのHtmlHeaderFooterに更新します。
  6. ページプレースホルダーの構文を修正します([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は、モダンブラウザで表示されるコンテンツとまったく同じようにレンダリングされます。

簡素化された展開:プラットフォーム固有のバイナリを管理する必要はありません。 TempFolderDeploymentのセレモニーはありません。 NuGetパッケージをインストールするだけです。

アクティブな開発: IronPDFの定期的な更新は、現在および将来 for .NETバージョンとの互換性を確保します。

拡張機能:火曜日は HTML を PDF にのみ変換します。 IronPDFはPDF操作、電子署名、PDF/Aコンプライアンス、フォーム入力、透かし、結合/分割操作を追加します。

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

Curtis Chau
テクニカルライター

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

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

アイアンサポートチーム

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