移行ガイド C#でSpire.PDFからIronPDFへ移行する方法 カーティス・チャウ 公開日:2026年2月1日 IronPDF をダウンロード NuGet ダウンロード DLL ダウンロード Windows 版 無料トライアル LLM向けのコピー LLM向けのコピー LLM 用の Markdown としてページをコピーする ChatGPTで開く このページについてChatGPTに質問する ジェミニで開く このページについてGeminiに問い合わせる Grokで開く このページについてGrokに質問する 困惑の中で開く このページについてPerplexityに問い合わせる 共有する Facebook で共有 Xでシェア(Twitter) LinkedIn で共有 URLをコピー 記事をメールで送る Spire.PDFからIronPdfへの移行は、テキストを画像としてレンダリングするライブラリから、最新のChromiumレンダリングエンジンを使用して、選択可能で検索可能な真のテキストを生成するライブラリへとPDF生成ワークフローを変換します。このガイドでは、Spire.PDFの致命的なHTMLレンダリングの制限とフォント埋め込みの問題を解決する、完全でステップバイステップの移行パスを提供します。 なぜSpire.PDFからIronPDFへ移行するのか スパイアを理解する.PDF Spire.PDFは、.NET開発者がPDFドキュメントを効率的に扱えるように設計された、堅牢な商用PDFライブラリです。 Spire.PDFは、特にレガシーアプリケーションにおいて、その特異な機能によりプログラミングコミュニティでその名を知られており、その統合機能はE-iceblueツールセットの他のコンポーネントとシームレスに連携しています。 しかし、Spire.PDFには、特にHTMLからPDFへの変換や最新のWeb標準のサポートなど、実際の使用に影響するいくつかの根本的な問題があります。 重要な技術的問題 問題 インパクト IronPDF ソリューション 画像としてレンダリングされたテキスト。 PDFが検索できない、アクセスできない、テキストがコピーできない。 リアルテキストレンダリング インターネット・エクスプローラー依存性 時代遅れのレンダリング、セキュリティリスク 最新のChromiumエンジン フォント埋め込みに失敗しました。 ドキュメントが他のシステムで間違って見える 信頼性の高いフォント処理 大きなデプロイメントフットプリント。 メモリ使用量が多く、起動が遅い 効率的なデプロイメント 限定的なCSSサポート。 最新のレイアウトが正しく表示されない CSS3をフルサポート 核となる問題:画像ベースのPDF Spire.PDFの重大な欠点の1つは、HTMLドキュメント内のテキストを画像としてレンダリングする傾向があることです。 その結果、テキストを選択したり検索したりすることができないPDFができあがります。これは、検索機能や文書テキストのインタラクションが必要なアプリケーションにとっては重大な制限となります。 Spire.PDFのLoadFromHTML()メソッドを使用すると、テキストが実際のテキストではなくビットマップ画像としてレンダリングされることが多く、このような問題が発生します: テキストは選択できません テキストは検索できません テキストはコピーできません スクリーンリーダーでは読めません(アクセシビリティ違反)。 ファイルサイズは非常に大きくなります。 ズームするとピクセル化する Spire.PDFとIronPDFの比較 フィーチャー Spire.PDF IronPDF HTMLからPDFへのレンダリング。 画像としてレンダリングされたテキスト 真のテキストレンダリング(選択および検索可能) レンダリングエンジン Internet Explorerに依存するシステムもあります。 Chromiumベース、最新のウェブ標準準拠 フォントの扱い フォント埋め込みに関する既知の問題 信頼性の高い堅牢なフォント処理 CSS3のサポート。 制限的 フル フレックスボックス/グリッド サポートされていません フルサポート JavaScript(ジャバスクリプト 制限的 完全なES6 PDFアクセシビリティ 悪い(画像ベース) 優秀 APIデザイン。 複雑 シンプルで直感的 展開フットプリント 大規模 適度 ライセンスについて フリーミアム/商用 商用 2025年と2026年まで.NET 10とC# 14の採用を計画しているチームにとって、IronPDFはSpire.PDFのHTMLからPDFへの変換における重要な問題を解決し、テキストを画像ではなく実際に選択可能なテキストとしてレンダリングすることで、PDFの検索性とアクセス性を確保します。 始める前に 前提条件 .NET 環境: .NET Framework 4.6.2+ または .NET Core 3.1+ / .NET 5/6/7/8/9+ NuGetアクセス: NuGetパッケージをインストールする機能 IronPDFライセンス: ironpdf.comからライセンスキーを取得します。 NuGetパッケージの変更 # Remove Spire.PDF dotnet remove package Spire.PDF dotnet remove package FreeSpire.PDF # If using free version # Install IronPDF dotnet add package IronPdf # Remove Spire.PDF dotnet remove package Spire.PDF dotnet remove package FreeSpire.PDF # If using free version # Install IronPDF dotnet add package IronPdf SHELL ライセンス構成 // Add at application startup IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"; // Add at application startup IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"; $vbLabelText $csharpLabel 完全な API リファレンス 名前空間の変更 // Before: Spire.PDF using Spire.Pdf; using Spire.Pdf.Graphics; using Spire.Pdf.HtmlConverter; // After: IronPDF using IronPdf; using IronPdf.Editing; // Before: Spire.PDF using Spire.Pdf; using Spire.Pdf.Graphics; using Spire.Pdf.HtmlConverter; // After: IronPDF using IronPdf; using IronPdf.Editing; $vbLabelText $csharpLabel コア API マッピング Spire.PDF IronPDF ノート new PdfDocument(). new ChromePdfRenderer(). HTMLレンダリング pdf.LoadFromHTML()を使用してください。 renderer.RenderHtmlAsPdf() HTML変換 pdf.LoadFromFile()を使用してください。 PdfDocument.FromFile()を使用してください。 既存のPDFを読み込む pdf.SaveToFile()を使用してください。 pdf.SaveAs() ファイルに保存 pdf.Close() 不要 dispose パターンの使用 pdf.Pages.Add(). renderer.RenderHtmlAsPdf() HTMLからページを作成 pdf.InsertPageRange() PdfDocument.Merge()を使用してください。 PDFのマージ page.Canvas.DrawString()。 TextStamper</code> + <code>ApplyStamp() テキストの追加 PdfFont HTMLのCSSスタイリング フォント設定 PdfBrush HTMLのCSSスタイリング 色/塗りつぶし設定 コード移行の例 例1: HTMLからPDFへの変換 翻訳前 (Spire.PDF): // NuGet: Install-Package Spire.PDF using Spire.Pdf; using Spire.Pdf.Graphics; using System; class Program { static void Main() { PdfDocument pdf = new PdfDocument(); PdfHtmlLayoutFormat htmlLayoutFormat = new PdfHtmlLayoutFormat(); string htmlString = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML.</p></body></html>"; pdf.LoadFromHTML(htmlString, false, true, true); pdf.SaveToFile("output.pdf"); pdf.Close(); } } // NuGet: Install-Package Spire.PDF using Spire.Pdf; using Spire.Pdf.Graphics; using System; class Program { static void Main() { PdfDocument pdf = new PdfDocument(); PdfHtmlLayoutFormat htmlLayoutFormat = new PdfHtmlLayoutFormat(); string htmlString = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML.</p></body></html>"; pdf.LoadFromHTML(htmlString, false, true, true); pdf.SaveToFile("output.pdf"); pdf.Close(); } } $vbLabelText $csharpLabel 翻訳後(IronPDF):。 // NuGet: Install-Package IronPdf using IronPdf; using System; class Program { static void Main() { var renderer = new ChromePdfRenderer(); string htmlString = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML.</p></body></html>"; var pdf = renderer.RenderHtmlAsPdf(htmlString); pdf.SaveAs("output.pdf"); } } // NuGet: Install-Package IronPdf using IronPdf; using System; class Program { static void Main() { var renderer = new ChromePdfRenderer(); string htmlString = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML.</p></body></html>"; var pdf = renderer.RenderHtmlAsPdf(htmlString); pdf.SaveAs("output.pdf"); } } $vbLabelText $csharpLabel この例は、HTMLレンダリングの基本的な違いを示しています。 Spire.PDFは、PdfHtmlLayoutFormatオブジェクトでLoadFromHTML()を使用し、多くの場合、テキストをビットマップ画像としてレンダリングします。 その結果、ユーザーがテキストを選択、コピー、検索できないPDFが出来上がりました。 IronPDFはChromePdfRendererとRenderHtmlAsPdf()を使用し、完全に選択可能で、検索可能で、アクセス可能な真のテキストを生成します。 Close()呼び出しは必要ありません-IronPDFは自動クリーンアップのためにdisposeパターンを使用します。HTML to PDF documentation を参照してください。 例2: 複数のPDFをマージする 翻訳前 (Spire.PDF): // NuGet: Install-Package Spire.PDF using Spire.Pdf; using System; class Program { static void Main() { PdfDocument pdf1 = new PdfDocument(); pdf1.LoadFromFile("document1.pdf"); PdfDocument pdf2 = new PdfDocument(); pdf2.LoadFromFile("document2.pdf"); pdf1.InsertPageRange(pdf2, 0, pdf2.Pages.Count - 1); pdf1.SaveToFile("merged.pdf"); pdf1.Close(); pdf2.Close(); } } // NuGet: Install-Package Spire.PDF using Spire.Pdf; using System; class Program { static void Main() { PdfDocument pdf1 = new PdfDocument(); pdf1.LoadFromFile("document1.pdf"); PdfDocument pdf2 = new PdfDocument(); pdf2.LoadFromFile("document2.pdf"); pdf1.InsertPageRange(pdf2, 0, pdf2.Pages.Count - 1); pdf1.SaveToFile("merged.pdf"); pdf1.Close(); pdf2.Close(); } } $vbLabelText $csharpLabel 翻訳後(IronPDF):。 // NuGet: Install-Package IronPdf using IronPdf; using System; class Program { static void Main() { var pdf1 = PdfDocument.FromFile("document1.pdf"); var pdf2 = PdfDocument.FromFile("document2.pdf"); var merged = PdfDocument.Merge(pdf1, pdf2); merged.SaveAs("merged.pdf"); } } // NuGet: Install-Package IronPdf using IronPdf; using System; class Program { static void Main() { var pdf1 = PdfDocument.FromFile("document1.pdf"); var pdf2 = PdfDocument.FromFile("document2.pdf"); var merged = PdfDocument.Merge(pdf1, pdf2); merged.SaveAs("merged.pdf"); } } $vbLabelText $csharpLabel Spire.PDFでは、new PdfDocument() + LoadFromFile()で各ドキュメントを手動で読み込み、InsertPageRange()を使って挿入するページを指定し、最後に各ドキュメントでClose()を呼び出す必要があります。 IronPDFはよりシンプルなPdfDocument.FromFile()パターンと、複数のドキュメントを受け入れる静的なPdfDocument.Merge()メソッドを使用します。 Close()コールは不要です。 詳しくは、チュートリアルをご覧ください。 例3: PDFにテキストを追加する 翻訳前 (Spire.PDF): // NuGet: Install-Package Spire.PDF using Spire.Pdf; using Spire.Pdf.Graphics; using System.Drawing; using System; class Program { static void Main() { PdfDocument pdf = new PdfDocument(); PdfPageBase page = pdf.Pages.Add(); PdfFont font = new PdfFont(PdfFontFamily.Helvetica, 20); PdfBrush brush = new PdfSolidBrush(Color.Black); page.Canvas.DrawString("Hello from Spire.PDF!", font, brush, new PointF(50, 50)); pdf.SaveToFile("output.pdf"); pdf.Close(); } } // NuGet: Install-Package Spire.PDF using Spire.Pdf; using Spire.Pdf.Graphics; using System.Drawing; using System; class Program { static void Main() { PdfDocument pdf = new PdfDocument(); PdfPageBase page = pdf.Pages.Add(); PdfFont font = new PdfFont(PdfFontFamily.Helvetica, 20); PdfBrush brush = new PdfSolidBrush(Color.Black); page.Canvas.DrawString("Hello from Spire.PDF!", font, brush, new PointF(50, 50)); pdf.SaveToFile("output.pdf"); pdf.Close(); } } $vbLabelText $csharpLabel 翻訳後(IronPDF):。 // NuGet: Install-Package IronPdf using IronPdf; using IronPdf.Editing; using System; class Program { static void Main() { var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf("<html><body></body></html>"); var textStamper = new TextStamper() { Text = "Hello from IronPDF!", FontSize = 20, VerticalOffset = 50, HorizontalOffset = 50 }; pdf.ApplyStamp(textStamper); pdf.SaveAs("output.pdf"); } } // NuGet: Install-Package IronPdf using IronPdf; using IronPdf.Editing; using System; class Program { static void Main() { var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf("<html><body></body></html>"); var textStamper = new TextStamper() { Text = "Hello from IronPDF!", FontSize = 20, VerticalOffset = 50, HorizontalOffset = 50 }; pdf.ApplyStamp(textStamper); pdf.SaveAs("output.pdf"); } } $vbLabelText $csharpLabel Spire.PDFは、PdfFont、PdfBrush、およびpage.Canvas.DrawString()によるキャンバスベースの描画モデルを使用し、PointFを使用して特定の座標にテキストを配置します。 IronPDFはText、FontSize、VerticalOffset、HorizontalOffsetのような直感的なプロパティを持つTextStamperオブジェクトを使用し、それをApplyStamp()で適用します。 このアプローチは、より宣言的で保守が容易です。 画像としてのテキスト問題 これが重要な理由 Spire.PDFが画像ベースのレンダリングを使用してHTMLをPDFに変換する場合、ドキュメントは本質的な機能を失います: 1. テキスト検索なし:ユーザーは Ctrl+F を使用してテキストを検索できません。 文書管理システムは、コンテンツにインデックスを付けることができません。 2. テキストの選択/コピー不可:引用、参照、またはデータをコピーしようとするユーザーは、テキストを選択できません (画像です)。 3. アクセシビリティ違反:画像ベースの PDF は、WCAG 2.1 準拠、Section 508 準拠 (米国政府)、ADA 要件、およびスクリーン リーダーの互換性を満たしていません。 4. 大きなファイル サイズ:同じコンテンツの比較では、Spire.PDF (画像ベース) はIronPDF(テキストベース) よりも最大 16 倍大きいファイルを生成します。 検出:あなたのPDFは画像ベースですか? Spire.PDFで作成したドキュメントを開き、以下のテストをお試しください: 1.テキストの選択:テキストをクリックしてドラッグします。 何もハイライトがない場合 → IMAGE-BASED Ctrl+F 検索:ページ上の任意の単語を検索します。 該当するものがない"場合 → IMAGE-BASED 3.コピー/貼り付け:テキストを選択してメモ帳にコピーします。 何も貼り付けられない場合 → IMAGE-BASED インターネット エクスプローラーの問題 Spire.PDFのレンダリングエンジンについて Spire.PDFは、環境によってはHTMLレンダリングをInternet Explorer/Edge Legacyに依存しています。 IEは2022年に非推奨となり、モダンなCSSは機能せず、JavaScriptのサポートは限られており、レンダリングはシステム間で一貫性がありません。 スパイアで失敗するモダン CSS.PDF <div style="display: flex; justify-content: space-between; gap: 20px;"> <div style="flex: 1;">Column 1</div> <div style="flex: 1;">Column 2</div> </div> <div style="display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px;"> <div>Item 1</div> <div>Item 2</div> <div>Item 3</div> </div> <style> :root { --primary-color: #007bff; } h1 { color: var(--primary-color); } </style> <div style="display: flex; justify-content: space-between; gap: 20px;"> <div style="flex: 1;">Column 1</div> <div style="flex: 1;">Column 2</div> </div> <div style="display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px;"> <div>Item 1</div> <div>Item 2</div> <div>Item 3</div> </div> <style> :root { --primary-color: #007bff; } h1 { color: var(--primary-color); } </style> HTML IronPDFは最新のChromiumレンダリングを使用しているため、これらのCSS機能はすべて正しく動作します。 移行後の新機能 IronPdfに移行した後は、Spire.PDFでは提供できない機能を得ることができます: 選択可能で、検索可能なテキスト var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf("<h1>Important Contract</h1>"); pdf.SaveAs("contract.pdf"); // Result: // ✅ Text is fully selectable // ✅ Text is searchable with Ctrl+F // ✅ Text can be copied to clipboard // ✅ Screen readers work perfectly // ✅ File size is compact // ✅ Zooming is crystal clear var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf("<h1>Important Contract</h1>"); pdf.SaveAs("contract.pdf"); // Result: // ✅ Text is fully selectable // ✅ Text is searchable with Ctrl+F // ✅ Text can be copied to clipboard // ✅ Screen readers work perfectly // ✅ File size is compact // ✅ Zooming is crystal clear $vbLabelText $csharpLabel 最新の CSS サポート var renderer = new ChromePdfRenderer(); var html = @" <style> :root { --primary: #007bff; } .container { display: flex; gap: 20px; } .grid { display: grid; grid-template-columns: repeat(3, 1fr); } </style> <div class='container'> <div style='flex: 1; color: var(--primary)'>Column 1</div> <div style='flex: 1'>Column 2</div> </div> <div class='grid'> <div>Item 1</div> <div>Item 2</div> <div>Item 3</div> </div>"; var pdf = renderer.RenderHtmlAsPdf(html); // All modern CSS features render correctly! var renderer = new ChromePdfRenderer(); var html = @" <style> :root { --primary: #007bff; } .container { display: flex; gap: 20px; } .grid { display: grid; grid-template-columns: repeat(3, 1fr); } </style> <div class='container'> <div style='flex: 1; color: var(--primary)'>Column 1</div> <div style='flex: 1'>Column 2</div> </div> <div class='grid'> <div>Item 1</div> <div>Item 2</div> <div>Item 3</div> </div>"; var pdf = renderer.RenderHtmlAsPdf(html); // All modern CSS features render correctly! $vbLabelText $csharpLabel HTMLベースの透かし var pdf = renderer.RenderHtmlAsPdf(html); pdf.ApplyWatermark(@" <div style=' font-size: 48px; color: rgba(255, 0, 0, 0.5); transform: rotate(-45deg); '>DRAFT</div>"); var pdf = renderer.RenderHtmlAsPdf(html); pdf.ApplyWatermark(@" <div style=' font-size: 48px; color: rgba(255, 0, 0, 0.5); transform: rotate(-45deg); '>DRAFT</div>"); $vbLabelText $csharpLabel 移行チェックリスト 移行前 コードベース内のすべての Spire.PDF の使用状況を一覧表示する 既存のPDFのテキスト選択可能性をテストする(重大な問題の検出) ドキュメントのLoadFromHTML()呼び出し (これらは修正の優先事項です) ironpdf.comからIronPDFライセンスキーを取得します コードの更新 Spire.PDF NuGet パッケージを削除します (無料版を使用している場合はFreeSpire.PDFも削除します) IronPdf NuGetパッケージをインストールする 名前空間のインポートを更新します ( using Spire.Pdf; → using IronPdf; ) LoadFromHTML()をRenderHtmlAsPdf()に置き換えます (重要な修正) -new PdfDocument().+ LoadFromFile()をPdfDocument.FromFile()に置き換えます InsertPageRange() PdfDocument.Merge()に置き換えます Canvas.DrawString()をTextStamper + ApplyStamp()に置き換えます。 SaveToFile()をSaveAs()に置き換えます すべてのClose()呼び出しを削除します (IronPDF では必要ありません) アプリケーションの起動時にライセンスの初期化を追加 テスティング 生成されたPDFでテキストが選択可能であることを確認する(CRITICAL TEST) CSS レンダリングの改善を検証 (Flexbox/Grid が動作するようになりました) ファイルサイズが小さいことを確認する スクリーンリーダーでアクセシビリティをテストする パフォーマンス比較 カーティス・チャウ 今すぐエンジニアリングチームとチャット テクニカルライター 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レンダリングに切り替えます。グラフィックスプリミティブの置き換えと自動レイアウトのコード例を含みます。 詳しく読む C#でSSRSからIronPDFに移行する方法C#でSelectPdfから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レンダリングに切り替えます。グラフィックスプリミティブの置き換えと自動レイアウトのコード例を含みます。 詳しく読む