移行ガイド Haukcode.DinkToPdfからIronPdfへの移行 カーティス・チャウ 公開日:2026年1月11日 IronPDF をダウンロード NuGet ダウンロード DLL ダウンロード Windows 版 無料トライアル LLM向けのコピー LLM向けのコピー LLM 用の Markdown としてページをコピーする ChatGPTで開く このページについてChatGPTに質問する ジェミニで開く このページについてGeminiに問い合わせる Grokで開く このページについてGrokに質問する 困惑の中で開く このページについてPerplexityに問い合わせる 共有する Facebook で共有 Xでシェア(Twitter) LinkedIn で共有 URLをコピー 記事をメールで送る Haukcode.DinkToPdf は、かつて人気があった DinkToPdf ライブラリの続編であり、wkhtmltopdf バイナリを使用して .NET アプリケーション用に HTML を PDF に変換します。 Haukcode.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.DinkToPdf IronPDF 基盤エンジン 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 $vbLabelText $csharpLabel ステップ 4: ライセンスの初期化 アプリケーション起動時のライセンス初期化を追加します: 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); } } $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"); } } $vbLabelText $csharpLabel Haukcode.DinkToPdfは、PdfToolsでSynchronizedConverterを作成し、入れ子になったGlobalSettingsとObjectsでHtmlToPdfDocumentを構成し、HtmlContentでObjectSettingsを追加し、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); } } $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"); } } $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); } } $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"); } } $vbLabelText $csharpLabel Haukcode.DinkToPdfは、GlobalSettings内の設定を、別のMarginSettingsオブジェクトでネストします。 IronPDFはPaperSize、PaperOrientation、そして個々のマージンプロパティのような明確な名前のRenderingOptionsプロパティを直接提供します。 Haukcode.DinkToPdf APIからIronPdfへのマッピングリファレンス このマッピングは、APIと同等のものを直接示すことで、移行を加速します: コンバーター・クラスのマッピング Haukcode.DinkToPdf IronPDF ノート SynchronizedConverter(シンクロナイズド・コンバーター ChromePdfRenderer` スレッドセーフ、シングルトン不要 BasicConverter ChromePdfRenderer 同じクラスで両方を処理 PdfTools 該当なし 不要 IConverter 該当なし レンダラーを直接使用する ドキュメント構成マッピング Haukcode.DinkToPdf IronPDF ノート HtmlToPdfDocument メソッドコール RenderHtmlAsPdf()を直接使用してください。 グローバル設定 レンダリングオプション レンダリング前の設定 オブジェクト設定 レンダリングオプション 1つにまとめる converter.Convert(doc). renderer.RenderHtmlAsPdf(html). `PdfDocument を返します。 GlobalSettingsプロパティのマッピング GlobalSettings プロパティ IronPDF プロパティ ノート カラーモード RenderingOptions.GrayScale(レンダリングオプション.グレイスケール ブール値、グレースケールにはtrueを設定します。 オリエンテーション|RenderingOptions.PaperOrientation|ポートレートまたは風景。 用紙サイズ|RenderingOptions.PaperSize|PdfPaperSize`列挙型を使用してください。 マージン.トップ RenderingOptions.MarginTop。 単位:ミリメートル マージン.ボトム RenderingOptions.MarginBottom。 単位:ミリメートル マージン.左 RenderingOptions.MarginLeft(レンダリングオプション.マージンレフト)。 単位:ミリメートル マージン.Right RenderingOptions.MarginRight 単位:ミリメートル オブジェクト設定プロパティのマッピング オブジェクト設定プロパティ IronPDF 同等物 ノート HtmlContent RenderHtmlAsPdf()の最初のパラメータ 直接パラメータ ページ</code> (URL)|renderer.RenderUrlAsPdf(url)`のようにします。 別メソッド HeaderSettings.Right = "[ページ]"。 TextHeader.RightText = "{page}". さまざまなプレースホルダ構文 プレースホルダーの構文の移行 Haukcode.DinkToPdf IronPDF ノート [ページ]|{ページ}` 現在のページ番号 [toPage] {総ページ数} 総ページ数 [日付] {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! $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 $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}" }; $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パッケージをインストールする 3.名前空間のインポートをDinkToPdfからIronPdfに更新してください。 4.SynchronizedConverterをChromePdfRendererに置き換えてください。 5.HtmlToPdfDocumentパターンを直接メソッド呼び出しに変換する 6.GlobalSettingsをRenderingOptionsに変換してください。 7.ObjectSettings を RenderingOptions に変換してください。 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() )。 積極的な開発: .NET 10 と C# 14 の採用が 2026 年まで増加するにつれて、IronPDF の定期的な更新により、現在のおよび将来の .NET バージョンとの互換性が確保されます。 カーティス・チャウ 今すぐエンジニアリングチームとチャット テクニカルライター Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。 関連する記事 公開日 2026年2月1日 C#でZetPDFからIronPDFに移行する方法 この完全なC#ガイドでZetPDFからIronPDFへの移行をマスターしてください。座標ベースのライブラリから最新のHTML-to-PDFソリューションに切り替えます。HTML変換、PDFのマージ、PDFSharpの依存関係の削除のコード例が含まれています。 詳しく読む 公開日 2026年2月1日 C#でScryber.CoreからIronPDFに移行する方法 この完全なC#ガイドでScryber.CoreからIronPDFへの移行をマスターしてください。カスタムXML/HTMLパースから最新のChromiumレンダラーに切り替えます。HTML変換、URLレンダリング、独自のバインディングを置き換えるコード例を含みます。 詳しく読む 公開日 2026年2月1日 C#でXFINIUM.PDFからIronPdfへ移行する方法 この完全なC#ガイドでXFINIUM.PDFからIronPDFへの移行をマスターしてください。座標ベースの手動ポジショニングから宣言的なHTML/CSSレンダリングに切り替えます。グラフィックスプリミティブの置き換えと自動レイアウトのコード例を含みます。 詳しく読む Adobe PDF Library SDKからIronPdfへの移行方法ActivePDFからIronPDFへの移行...
公開日 2026年2月1日 C#でZetPDFからIronPDFに移行する方法 この完全なC#ガイドでZetPDFからIronPDFへの移行をマスターしてください。座標ベースのライブラリから最新のHTML-to-PDFソリューションに切り替えます。HTML変換、PDFのマージ、PDFSharpの依存関係の削除のコード例が含まれています。 詳しく読む
公開日 2026年2月1日 C#でScryber.CoreからIronPDFに移行する方法 この完全なC#ガイドでScryber.CoreからIronPDFへの移行をマスターしてください。カスタムXML/HTMLパースから最新のChromiumレンダラーに切り替えます。HTML変換、URLレンダリング、独自のバインディングを置き換えるコード例を含みます。 詳しく読む
公開日 2026年2月1日 C#でXFINIUM.PDFからIronPdfへ移行する方法 この完全なC#ガイドでXFINIUM.PDFからIronPDFへの移行をマスターしてください。座標ベースの手動ポジショニングから宣言的なHTML/CSSレンダリングに切り替えます。グラフィックスプリミティブの置き換えと自動レイアウトのコード例を含みます。 詳しく読む