移行ガイド C#でTextControlからIronPDFに移行する方法 カーティス・チャウ 公開日:2026年2月1日 IronPDF をダウンロード NuGet ダウンロード DLL ダウンロード Windows 版 無料トライアル LLM向けのコピー LLM向けのコピー LLM 用の Markdown としてページをコピーする ChatGPTで開く このページについてChatGPTに質問する ジェミニで開く このページについてGeminiに問い合わせる Grokで開く このページについてGrokに質問する 困惑の中で開く このページについてPerplexityに問い合わせる 共有する Facebook で共有 Xでシェア(Twitter) LinkedIn で共有 URLをコピー 記事をメールで送る TX Text Controlは、.NETエコシステムにおける包括的なドキュメントエディターコンポーネントとしての地位を確立しており、UIコントロールを組み込んだ堅牢なDOCX編集機能を提供しています。 しかし、文書の完全な編集ではなく、PDFの生成が主な要件である開発チームにとって、TextControlのアーキテクチャは、ライセンスコスト、複雑さ、実行時の依存関係において、大きなオーバーヘッドをもたらします。 このガイドでは、TextControlからIronPDFへの完全な移行経路を、移行を検討しているプロの.NET開発者のために、ステップバイステップの手順、コード比較、実用的な例で説明します。 なぜTextControlから移行するのか 通常、TextControlからの移行は、ツールを実際の要件に適合させることが中心になります。 TX Text Controlは基本的にドキュメントエディタで、PDF生成は二次的な機能として扱われます。 開発チームが移行を検討する主な理由は次のとおりです: 高価なライセンス: TextControl は、開発者 1 人あたり年間最低 3,398 ドルの商用ライセンスで動作します。 4人のチームで年間約6,749ドル、サーバーデプロイメント・ランタイムライセンスの追加費用が見込まれます。 更新費用は毎年40%で、更新へのアクセスを維持するために必須です。 後付けの PDF:コアとなるアーキテクチャは PDF ではなくワードプロセッサです。 PDFの生成は可能ですが、中心的な機能ではなく付加的な機能であるため、出力品質は最適ではありません。 ハードウェア バグ: Intel Iris Xe グラフィックス バグは、新しい Intel プロセッサ (第 11 世代) でのドキュメント レンダリングに影響し、解決するにはレジストリの回避策が必要になります。 肥大化した依存関係: TextControl には、純粋に PDF 生成に重点を置いている場合には必要のないドキュメント編集 UI コンポーネントが含まれています。 ワードプロセッサ アーキテクチャ:最新の Web アプリケーションで要求される HTML から PDF へのワークフローには最適化されていません。 複雑な API: ServerTextControl のコンテキスト管理および選択モデルにより、単純な PDF 生成タスクに不必要な複雑さが加わります。 コスト比較 アスペクト TXテキストコントロール IronPDF 基本ライセンス $3,398+ 大幅値下げ 年間更新 40% 必須 オプションサポート 開発者あたり はい はい UIコンポーネント バンドル(肥大化) PDFフォーカス 3年間の総費用 $5,750+ はるかに低い IronPdfとTextControlの比較:機能の比較 アーキテクチャの違いを理解することは、技術的な意思決定者が移行への投資を評価するのに役立ちます: フィーチャー TXテキストコントロール IronPDF 主な対象 DOCX編集 PDF生成 ライセンス費用 開発者 1 名あたり年間 3,398 ドル 開発者1名につき1回のみ749ドル PDF品質 基本的なアドオン機能 高いコア機能 ハードウェアの互換性 インテルIrisの既知の問題 すべてのデバイスで安定 UIとの統合 UIコンポーネントが必要 UIコンポーネントの肥大化なし HTML/CSSレンダリング HTMLでバギー モダンHTML5/CSS3 HTMLからPDFへ はい(二次) はい(プライマリ) CSSサポート 制限的 完全なCSS3 JavaScript 制限的 フルES2024 URLからPDFへ 複雑なセットアップ ネイティブ ヘッダー/フッター 複雑なAPI シンプルなHTML メールマージ 独自仕様 HTMLテンプレート PDF/A はい はい パスワード保護 はい はい デジタル署名 はい はい PDFのマージ 制限的 はい PDFの分割 制限的 はい コンテキスト管理 必須 不要 クロスプラットフォーム Windowsに特化 はい クイックスタートTextControlからIronPdfへの移行 これらの基本的なステップを踏めば、すぐにでも移行を開始できます。 ステップ 1: NuGet パッケージを置き換える すべてのTextControlパッケージを削除してください: # Remove TX Text Control dotnet remove package TXTextControl.TextControl dotnet remove package TXTextControl.DocumentServer # Remove TX Text Control dotnet remove package TXTextControl.TextControl dotnet remove package TXTextControl.DocumentServer SHELL IronPDFをインストールします: # Install IronPDF dotnet add package IronPdf # Install IronPDF dotnet add package IronPdf SHELL ステップ 2: 名前空間の更新 TextControl名前空間をIronPdf名前空間に置き換えてください: // Before (TextControl) using TXTextControl; using TXTextControl.DocumentServer; // After (IronPDF) using IronPdf; // Before (TextControl) using TXTextControl; using TXTextControl.DocumentServer; // After (IronPDF) using IronPdf; $vbLabelText $csharpLabel ステップ 3: ライセンスの初期化 アプリケーション起動時のライセンス初期化を追加します: IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"; IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"; $vbLabelText $csharpLabel コード移行の例 HTML を PDF に変換する 最も一般的な使用例は、これらの.NET PDFライブラリのアーキテクチャの違いを示しています。 TextControlのアプローチ: // NuGet: Install-Package TXTextControl.Server using TXTextControl; using System.IO; namespace TextControlExample { class Program { static void Main(string[] args) { using (ServerTextControl textControl = new ServerTextControl()) { textControl.Create(); string html = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>"; textControl.Load(html, StreamType.HTMLFormat); textControl.Save("output.pdf", StreamType.AdobePDF); } } } } // NuGet: Install-Package TXTextControl.Server using TXTextControl; using System.IO; namespace TextControlExample { class Program { static void Main(string[] args) { using (ServerTextControl textControl = new ServerTextControl()) { textControl.Create(); string html = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>"; textControl.Load(html, StreamType.HTMLFormat); textControl.Save("output.pdf", StreamType.AdobePDF); } } } } $vbLabelText $csharpLabel IronPDFのアプローチ: // NuGet: Install-Package IronPdf using IronPdf; namespace IronPdfExample { class Program { static void Main(string[] args) { var renderer = new ChromePdfRenderer(); string html = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>"; var pdf = renderer.RenderHtmlAsPdf(html); pdf.SaveAs("output.pdf"); } } } // NuGet: Install-Package IronPdf using IronPdf; namespace IronPdfExample { class Program { static void Main(string[] args) { var renderer = new ChromePdfRenderer(); string html = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>"; var pdf = renderer.RenderHtmlAsPdf(html); pdf.SaveAs("output.pdf"); } } } $vbLabelText $csharpLabel TextControlバージョンでは、ServerTextControlインスタンスを作成し、Create()を呼び出してコンテキストを初期化し、StreamType.HTMLFormatでHTMLを読み込み、StreamType.AdobePDFで保存する必要があります。 usingブロックは、適切なリソース処理のために必須です。 IronPDFはコンテキスト管理を完全に排除します。 ChromePdfRendererは初期化セレモニーを必要としません。 このようにアーキテクチャを単純化することで、認識負荷や潜在的なリソース管理のバグを軽減します。 高度なHTMLからPDFへのシナリオについては、HTMLからPDFへの変換ガイドをご覧ください。 複数のPDFをマージする PDFのマージは、これらのライブラリ間のもう1つの重要な複雑性の違いを明らかにします。 TextControlのアプローチ: // NuGet: Install-Package TXTextControl.Server using TXTextControl; using System.IO; namespace TextControlExample { class Program { static void Main(string[] args) { using (ServerTextControl textControl = new ServerTextControl()) { textControl.Create(); byte[] pdf1 = File.ReadAllBytes("document1.pdf"); textControl.Load(pdf1, StreamType.AdobePDF); byte[] pdf2 = File.ReadAllBytes("document2.pdf"); textControl.Load(pdf2, StreamType.AdobePDF, LoadAppendMode.Append); textControl.Save("merged.pdf", StreamType.AdobePDF); } } } } // NuGet: Install-Package TXTextControl.Server using TXTextControl; using System.IO; namespace TextControlExample { class Program { static void Main(string[] args) { using (ServerTextControl textControl = new ServerTextControl()) { textControl.Create(); byte[] pdf1 = File.ReadAllBytes("document1.pdf"); textControl.Load(pdf1, StreamType.AdobePDF); byte[] pdf2 = File.ReadAllBytes("document2.pdf"); textControl.Load(pdf2, StreamType.AdobePDF, LoadAppendMode.Append); textControl.Save("merged.pdf", StreamType.AdobePDF); } } } } $vbLabelText $csharpLabel IronPDFのアプローチ: // NuGet: Install-Package IronPdf using IronPdf; namespace IronPdfExample { class Program { static void Main(string[] args) { 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; namespace IronPdfExample { class Program { static void Main(string[] args) { var pdf1 = PdfDocument.FromFile("document1.pdf"); var pdf2 = PdfDocument.FromFile("document2.pdf"); var merged = PdfDocument.Merge(pdf1, pdf2); merged.SaveAs("merged.pdf"); } } } $vbLabelText $csharpLabel TextControl では、ファイルをバイト配列に読み込み、ServerTextControl コンテキストを管理し、LoadAppendMode.Append を使用してドキュメントをマージする必要があります。 IronPDFのPdfDocument.Merge()メソッドは単一の明示的な呼び出しですべてを処理します。 選択的なページ抽出を含む高度なマージシナリオについては、PDFのマージと分割ガイドを参照してください。 ヘッダーとフッターの追加 動的なページ番号を持つヘッダーとフッターは、APIの複雑さの違いを示しています。 TextControlのアプローチ: // NuGet: Install-Package TXTextControl.Server using TXTextControl; using System.IO; namespace TextControlExample { class Program { static void Main(string[] args) { using (ServerTextControl textControl = new ServerTextControl()) { textControl.Create(); string html = "<html><body><h1>Document Content</h1><p>Main body text.</p></body></html>"; textControl.Load(html, StreamType.HTMLFormat); HeaderFooter header = new HeaderFooter(HeaderFooterType.Header); header.Text = "Document Header"; textControl.Sections[0].HeadersAndFooters.Add(header); HeaderFooter footer = new HeaderFooter(HeaderFooterType.Footer); footer.Text = "Page {page} of {numpages}"; textControl.Sections[0].HeadersAndFooters.Add(footer); textControl.Save("output.pdf", StreamType.AdobePDF); } } } } // NuGet: Install-Package TXTextControl.Server using TXTextControl; using System.IO; namespace TextControlExample { class Program { static void Main(string[] args) { using (ServerTextControl textControl = new ServerTextControl()) { textControl.Create(); string html = "<html><body><h1>Document Content</h1><p>Main body text.</p></body></html>"; textControl.Load(html, StreamType.HTMLFormat); HeaderFooter header = new HeaderFooter(HeaderFooterType.Header); header.Text = "Document Header"; textControl.Sections[0].HeadersAndFooters.Add(header); HeaderFooter footer = new HeaderFooter(HeaderFooterType.Footer); footer.Text = "Page {page} of {numpages}"; textControl.Sections[0].HeadersAndFooters.Add(footer); textControl.Save("output.pdf", StreamType.AdobePDF); } } } } $vbLabelText $csharpLabel IronPDFのアプローチ: // NuGet: Install-Package IronPdf using IronPdf; using IronPdf.Rendering; namespace IronPdfExample { class Program { static void Main(string[] args) { var renderer = new ChromePdfRenderer(); string html = "<html><body><h1>Document Content</h1><p>Main body text.</p></body></html>"; var pdf = renderer.RenderHtmlAsPdf(html); pdf.AddTextHeader("Document Header"); pdf.AddTextFooter("Page {page} of {total-pages}"); pdf.SaveAs("output.pdf"); } } } // NuGet: Install-Package IronPdf using IronPdf; using IronPdf.Rendering; namespace IronPdfExample { class Program { static void Main(string[] args) { var renderer = new ChromePdfRenderer(); string html = "<html><body><h1>Document Content</h1><p>Main body text.</p></body></html>"; var pdf = renderer.RenderHtmlAsPdf(html); pdf.AddTextHeader("Document Header"); pdf.AddTextFooter("Page {page} of {total-pages}"); pdf.SaveAs("output.pdf"); } } } $vbLabelText $csharpLabel TextControl では、特定の HeaderFooterType 列挙型を持つ HeaderFooter オブジェクトを作成し、textControl.Sections[0] を通じてドキュメント セクションにアクセスし、HeadersAndFooters コレクションに追加する必要があります。 IronPDFはシンプルなプレースホルダー構文で直接AddTextHeaderとAddTextFooterメソッドを提供します。 完全なスタイルコントロールが可能なHTMLベースのヘッダーについては、IronPDFはHtmlHeaderFooterもサポートしています: renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter { HtmlFragment = @" <div style='width: 100%; text-align: center; font-size: 12pt;'> Company Report </div>", MaxHeight = 30 }; renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter { HtmlFragment = @" <div style='width: 100%; text-align: right; font-size: 10pt;'> Page {page} of {total-pages} </div>", MaxHeight = 25 }; renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter { HtmlFragment = @" <div style='width: 100%; text-align: center; font-size: 12pt;'> Company Report </div>", MaxHeight = 30 }; renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter { HtmlFragment = @" <div style='width: 100%; text-align: right; font-size: 10pt;'> Page {page} of {total-pages} </div>", MaxHeight = 25 }; $vbLabelText $csharpLabel ヘッダーとフッターのオプションについては、headers and footers documentationをご覧ください。 TextControl APIからIronPDFへのマッピングリファレンス このマッピングは、APIと同等のものを直接示すことで、移行を加速します: TXテキストコントロール IronPDF ノート ServerTextControl.Create()。 new ChromePdfRenderer(). コンテキスト管理なし tx.Load(html, StreamType.HTMLFormat). renderer.RenderHtmlAsPdf(html). 直接レンダリング tx.Load(url, StreamType.HTMLFormat). renderer.RenderUrlAsPdf(url)のようにします。 URLサポート tx.Save(path, StreamType.AdobePDF). pdf.SaveAs(path)のようにします。 簡単な保存 SaveSettings.PDFAConformance。 RenderingOptions.PdfAFormat PDF/A DocumentServer.MailMerge。 HTMLテンプレート + Razor テンプレートのマージ DocumentTarget.HeadersAndFootersを使用してください。 HtmlHeaderFooter ヘッダー/フッター ロード設定 レンダリングオプション 構成 StreamType.AdobePDF デフォルト出力 PDFが主 一般的な移行の問題と解決策 問題 1: ServerTextControl コンテキスト TextControlは、すべての操作にCreate()とusingブロックを必要とします。 ソリューション: IronPDFにはコンテキスト管理がありません: // Just create and use var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf(html); // Just create and use var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf(html); $vbLabelText $csharpLabel 課題2: StreamTypeの変換 TextControlは、StreamType列挙型によってさまざまなフォーマットをロードし、PDFに変換します。 ソリューション: IronPDFは中間フォーマット変換なしでHTMLを直接レンダリングします: // No format conversion needed var pdf = renderer.RenderHtmlAsPdf(html); // No format conversion needed var pdf = renderer.RenderHtmlAsPdf(html); $vbLabelText $csharpLabel 課題3:DOCXテンプレート TextControlは、メールマージのテンプレートにDOCXファイルを使用します。 ソリューション: C#文字列補間またはRazorを使ってHTMLテンプレートに変換する: var data = new { CustomerName = "John Doe", InvoiceNumber = "12345", Total = "$1,500.00" }; var html = $@" <html> <head> <style> body {{ font-family: Arial; padding: 40px; }} h1 {{ color: #333; }} .total {{ font-size: 24px; color: green; }} </style> </head> <body> <h1>Invoice #{data.InvoiceNumber}</h1> <p>Customer: {data.CustomerName}</p> <p class='total'>Total: {data.Total}</p> </body> </html>"; var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf(html); pdf.SaveAs("invoice.pdf"); var data = new { CustomerName = "John Doe", InvoiceNumber = "12345", Total = "$1,500.00" }; var html = $@" <html> <head> <style> body {{ font-family: Arial; padding: 40px; }} h1 {{ color: #333; }} .total {{ font-size: 24px; color: green; }} </style> </head> <body> <h1>Invoice #{data.InvoiceNumber}</h1> <p>Customer: {data.CustomerName}</p> <p class='total'>Total: {data.Total}</p> </body> </html>"; var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf(html); pdf.SaveAs("invoice.pdf"); $vbLabelText $csharpLabel 課題4: Intel Iris Xe グラフィックスのバグ TextControlは、第11世代のIntelプロセッサーでレンダリングの問題が文書化されており、レジストリの回避策が必要です。 ソリューション: IronPDFはChromiumレンダリングを使用しています。ハードウェアアクセラレーションのバグやレジストリの変更は必要ありません。 TextControl移行チェックリスト マイグレーション前のタスク コードベースを監査して、すべてのTextControlの使い方を特定します: grep -r "using TXTextControl" --include="*.cs" . grep -r "ServerTextControl\|Load\|Save" --include="*.cs" . grep -r "using TXTextControl" --include="*.cs" . grep -r "ServerTextControl\|Load\|Save" --include="*.cs" . SHELL HTMLに変換するためのメールマージテンプレートを文書化すること。 HtmlHeaderFooterで実装するためのヘッダー/フッターの要件に注意してください。 代替ソリューションが必要と思われるDOCX編集機能を特定してください。 コード更新タスク 1.TX Text Control NuGetパッケージの削除 2.IronPdf NuGetパッケージをインストールする 3.ServerTextControlコンテキスト管理を削除します (Create()コールはなくなります)。 4.StreamType.HTMLFormat のロードを RenderHtmlAsPdf に変換してください。 5.文字列補間またはRazorを使用したメールマージからHTMLテンプレートへの変換 6.HtmlHeaderFooterまたはAddTextHeader/AddTextFooterを使用するようにヘッダー/フッターを更新してください。 7.RenderingOptionsを使用したページ設定の簡素化 8.起動時のライセンス初期化を追加 移行後のテスト 移行後、これらの点を検証してください: すべてのドキュメントテンプレートが正しくレンダリングされることをテスト 必要であれば、PDF/Aコンプライアンスを検証すること。 パスワード保護機能のテスト すべてのページにヘッダー/フッターが表示されていることを確認する。 Intel第11世代ハードウェアで確認-IronPDFでレジストリを回避する必要はもうありません。 IronPDFに移行する主な利点 TextControlからIronPdfに移行することで、PDF生成に特化したチームにはいくつかの利点があります: PDF ファースト アーキテクチャ:IronPDFは PDF 生成に特化しており、最新の HTML5 および CSS3 標準を活用して強力なドキュメント作成およびレンダリング機能を提供します。 コスト効率:IronPDFの 1 回限りの価格設定により、特に年間 40% の更新が必須の TextControl のサブスクリプションベースのサービスと比較すると、長期的には大幅に安くなります。 実証済みの安定性:さまざまなハードウェアにわたる信頼性が文書化されており、Intel グラフィックスを使用した TextControl で発生するような問題を回避します。 コンテキスト管理なし: ServerTextControlの作成セレモニーとリソース破棄パターンを排除します。 IronPDFのステートレスレンダリングはコードをシンプルにし、潜在的なメモリーリークを減らします。 最新のレンダリング エンジン: .NET 10 と C# 14 の採用が 2026 年まで増加するにつれて、IronPDF の Chromium ベースのレンダリングにより、現在および将来の Web 標準との互換性が確保されます。 カーティス・チャウ 今すぐエンジニアリングチームとチャット テクニカルライター 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#で火PechkinからIronPDFに移行する方法C#でTelerik Reportingから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レンダリングに切り替えます。グラフィックスプリミティブの置き換えと自動レイアウトのコード例を含みます。 詳しく読む