IRONSOFTWAREHOME
ビデオ

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

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

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

このガイドでは、.NET開発者が移行を検討するために、ステップバイステップの手順、コード比較、実用的な例を用いて、TuesPechkinからIronPDFへの完全な移行パスを提供します。

なぜ今TuesuesPechkinから移行するのか

セキュリティを重視する開発チームにとって、TuesPechkinからの移行はもはやオプションではありません。 基礎となるwkhtmltopdfライブラリには、パッチが適用されていない重大な脆弱性があり、今後も修正されることはないでしょう。

重大なセキュリティ脆弱性:CVE-2022-35583

属性価値
CVE IDCVE-2022-35583
厳しさ重要(9.8/10)
アタックベクターネットワーク
ステータスパッチは適用されません
影響を受ける言語すべての火曜日Pechkinバージョン

wkhtmltopdfのメンテナは、セキュリティの脆弱性を修正しないと明言しています。火曜日を使用するすべてのアプリケーションは、Server-Side Request Forgery (SSRF) 攻撃に永久にさらされます。

攻撃の仕組み

ユーザーが提供したHTMLを処理する際、攻撃者は悪意のあるコンテンツを注入することができます:

<!-- Attacker submits this HTML to your PDF generator -->
<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

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
SHELL

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;

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

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

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

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

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

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

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

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

TuesPechkinは設定を文書全体のオプションのためのObjectSettingsに分けています。 IronPDFはすべてを明確かつ発見可能なプロパティ名を持つRenderingOptionsに統合しています。

TuesPechkinAPIからIronPDFへのマッピングリファレンス

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

火曜日IronPDF
StandardConverterChromePdfRenderer
ThreadSafeConverterChromePdfRenderer
HtmlToPdfDocumentメソッドのパラメータ
GlobalSettingsRenderingOptions
ObjectSettings.HtmlTextRenderHtmlAsPdf(html)
ObjectSettings.PageUrlRenderUrlAsPdf(url)
GlobalSettings.PaperSizeRenderingOptions.PaperSize
GlobalSettings.OrientationRenderingOptions.PaperOrientation
MarginSettingsMarginBottom、など。
[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!

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

問題: 高負荷時にTuesPechkinのAccessViolationExceptionで依然としてクラッシュします。

ソリューション: IronPDFはネイティブのスレッドセーフを備えています:

//IronPDFis inherently thread-safe
var renderer = new ChromePdfRenderer();
// Use from any thread without crashes

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

問題: TuesPechkinは[topage]プレースホルダーを使用します。

解決策: IronPDFのプレースホルダー構文を更新しました:

// 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!

第5号:ネイティブ・バイナリ管理

問題 TuesPechkinは、プラットフォーム固有のwkhtmltopdfバイナリとパス設定を必要とします。

ソリューション: IronPDFはNuGetを通してすべての依存関係を処理します:

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

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

コード更新タスク

1.TuesPechkin NuGet パッケージの削除 2.wkhtmltopdfネイティブバイナリの削除 3.IronPDFNuGet パッケージをインストールします 4. IronPdfへusingステートメントを更新します。 5.起動時のライセンスキー初期化の追加 6. コンバーターをChromePdfRendererに置き換えます。 7. RenderingOptionsに変換します。 8. ObjectSettingsをメソッドパラメーターに変換します。 9.個々のプロパティへのマージン設定の更新 10. ヘッダー/フッターの構文をHTMLベースのHtmlHeaderFooterに更新します。 11. ページプレースホルダーの構文を修正します([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は現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

...
詳しく読む

関連する記事

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日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。