比較

テキストコントロール vs IronPDF:技術比較ガイド

TextControl vs IronPDF:.NET PDF生成の技術的な比較

.NET開発者がPDF生成ライブラリを評価するとき、企業の議論では2つのソリューションが頻繁に登場します:TX Text ControlとIronPDFです。 どちらもPDF出力を生成できますが、基本的に異なるアーキテクチャ哲学を表しています。 この技術比較では、アーキテクトと開発者が.NETアプリケーションについて十分な情報を得た上で決定できるよう、両ライブラリを検証します。

TXテキストコントロールについて

TX Text Controlは、UIコントロールを組み込んだDOCX編集機能を重視する包括的なドキュメントエディタコンポーネントです。 PDF生成は、より広範な文書処理アーキテクチャの中の二次的な機能として存在します。 このプラットフォームは広範な文書編集機能を備えているため、リッチテキスト編集インターフェースを必要とするアプリケーションに適しています。

しかし、この包括的な性質は、開発チームが慎重に評価すべき考慮事項をもたらします:

  • 高価なライセンス: TX Text Controlは、開発者1人あたり3,398ドル以上の商用ライセンスで動作し、更新へのアクセスを維持するために40%の年次更新が義務付けられています。
  • 二次機能としてのPDF: コアアーキテクチャは、PDF生成よりもワープロ処理を優先し、PDF出力はアドオン機能として扱います。
  • 既知のハードウェアの問題:第 11 世代インテル プロセッサーに影響する、文書化されたインテル Iris Xe グラフィックスのレンダリング バグは、レジストリの回避策が必要です。
  • 肥大化した依存関係: PDFに特化したワークフローには不要かもしれない文書編集UIコンポーネントが含まれています。
  • 複雑なAPI:ServerTextControl コンテキスト管理と選択モデルのパターンが必要です。

IronPDFの理解

IronPdfはUIコンポーネントやDOCX編集ツールをレイヤー化することなく、主にPDF生成にフォーカスすることで、根本的に異なるアプローチを取っています。 このライブラリは、特にPDFの生成と操作に最適化された、無駄のない調整された設計で際立っており、PDFファーストのアーキテクチャツールとして非常に効率的です。

IronPDFの主な特徴は以下のとおりです:

  • PDFファーストアーキテクチャ:PDF 生成のためにゼロから設計され、堅牢なドキュメント作成およびレンダリング機能を提供します。
  • Chromiumレンダリングエンジン:JavaScriptの実行を完全にサポートし、最新のHTML5とCSS3の標準を活用しています。
  • コスト効率:1回限りのライセンスモデルにより、継続的なサブスクリプションコストを排除
  • 実証された安定性:さまざまなハードウェア構成における信頼性を文書化し、プラットフォーム固有のレンダリング問題を回避します。
  • シンプルな統合: コンテキスト管理や複雑な初期化パターンは必要ありません。

価格比較

TextControlとIronPDFのライセンス構造は、時間の経過とともに大きなコストの違いを明らかにします:

アスペクトTXテキストコントロールIronPDF
基本ライセンス開発者1名あたり3,398ドル以上開発者1名につき1回のみ749ドル
年間更新40% 必須オプションサポート
4人チーム(1年目)~$6,749~$2,996
3年間の総費用開発者1人あたり5,750ドル以上開発者1名につき749ドル
UIコンポーネントバンドル(肥大化の可能性)PDFのみ
サーバーランタイム追加ライセンス含まれるもの

機能比較

次の表は、TextControlとIronPDFの技術的な違いを主要な側面から見たものです:

フィーチャーTXテキストコントロールIronPDF
主な焦点DOCX編集PDF生成
PDFの品質基本的なアドオン機能高いコア機能
HTMLからPDFへはい(二次)はい(プライマリ)
CSSサポート制限的完全なCSS3
JavaScriptの実行制限的フルES2024
URLからPDFへ複雑な設定が必要ネイティブサポート
ヘッダー/フッター複雑なAPIシンプルなHTMLベース
メールマージ独自システムHTMLテンプレート
PDF/Aコンプライアンスはいはい
パスワード保護はいはい
デジタル署名はいはい
PDFをマージする制限的フルサポート
PDFを分割する制限的フルサポート
ウォーターマーク複雑な実装簡単なHTML/CSS
ハードウェアの互換性についてインテル® Iris の既知の問題すべてのデバイスで安定
コンテキスト管理必須不要
クロスプラットフォームWindowsに特化はい

APIアーキテクチャの違い

TextControlとIronPDFの決定的な違いは、APIの設計思想と初期化パターンにあります。

TextControl のアプローチ

TextControlは、ServerTextControlクラスを通して明示的なコンテキスト管理を必要とします。 すべての操作は、Create()を呼び出した後、usingブロック内で行わなければなりません:

// 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);
            }
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

このパターンでは、TextControl固有のクラス、ストリームタイプ、コンテキストのライフサイクルを理解する必要があります。

IronPDFのアプローチ

IronPDFはコンテキスト管理を完全に排除します。 ChromePdfRendererクラスは、開発者がすぐに使えるステートレスAPIを提供します:

// 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");
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

HTML変換機能に関する包括的なガイダンスについては、HTML to PDFチュートリアルをご覧ください。

APIマッピングリファレンス

TextControlからIronPdfへの移行を検討しているチームは、このマッピングが概念の等価性を理解するのに役立つと思います:

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.MailMergeHTMLテンプレート + Razorテンプレートのマージ
DocumentTarget.HeadersAndFootersを使用してください。<コード>HtmlHeaderFooter</コードヘッダー/フッター
<コード>ロード設定</コード<コード>レンダリングオプション</コード構成
<コード>StreamType.AdobePDF</コードデフォルト出力PDFが主なフォーマットです。

PDFドキュメントのマージ

ドキュメントのマージは、2つのライブラリ間で実装の複雑さが異なる共通の要件です。

TextControlの実装

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);
            }
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

IronPDFの実装

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");
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

PdfDocument.Merge メソッドは、任意の数のドキュメントを受け入れ、コンテキスト管理や手動でのバイト配列処理を必要とせずに、新しい結合されたPDFを返します。

ヘッダー、フッター、ページ番号

動的なページ番号を持つヘッダーとフッターを追加すると、APIの複雑さに大きな違いがあることがわかります。

TextControlの実装

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);
            }
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

IronPDFの実装

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");
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

より複雑なヘッダーデザインのために、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
};
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

URLからPDFへの変換

ライブのウェブページをPDFに変換すると、各ライブラリがウェブコンテンツをどのように処理するかというアーキテクチャの違いが明らかになります。

TextControl のアプローチ

TextControlは、限られたCSSとJavaScriptのサポートを提供するそのHTMLフォーマットハンドラを介して手動でURLをロードする必要があります:

using (ServerTextControl tx = new ServerTextControl())
{
    tx.Create();

    LoadSettings loadSettings = new LoadSettings();
    loadSettings.ApplicationFieldFormat = ApplicationFieldFormat.MSWord;
    tx.Load("https://example.com/invoice", StreamType.HTMLFormat, loadSettings);

    SaveSettings saveSettings = new SaveSettings();
    saveSettings.PDFAConformance = PDFAConformance.PDFa1b;
    tx.Save("output.pdf", StreamType.AdobePDF, saveSettings);
}
using (ServerTextControl tx = new ServerTextControl())
{
    tx.Create();

    LoadSettings loadSettings = new LoadSettings();
    loadSettings.ApplicationFieldFormat = ApplicationFieldFormat.MSWord;
    tx.Load("https://example.com/invoice", StreamType.HTMLFormat, loadSettings);

    SaveSettings saveSettings = new SaveSettings();
    saveSettings.PDFAConformance = PDFAConformance.PDFa1b;
    tx.Save("output.pdf", StreamType.AdobePDF, saveSettings);
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

IronPDFのアプローチ

IronPDFはChromiumエンジンによってネイティブのURLレンダリングを提供し、JavaScriptを実行し、すべてのスタイルを適用します:

var renderer = new ChromePdfRenderer();

//PDF/A準拠- simple property
renderer.RenderingOptions.PdfAFormat = PdfAVersions.PdfA1B;

var pdf = renderer.RenderUrlAsPdf("https://example.com/invoice");
pdf.SaveAs("output.pdf");
var renderer = new ChromePdfRenderer();

//PDF/A準拠- simple property
renderer.RenderingOptions.PdfAFormat = PdfAVersions.PdfA1B;

var pdf = renderer.RenderUrlAsPdf("https://example.com/invoice");
pdf.SaveAs("output.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

RenderUrlAsPdfメソッドは、動的に生成されたコンテンツを含むレンダリングされたページ全体をキャプチャするため、React、Angular、Vue.jsなどのフレームワークで構築された最新のWebアプリケーションに最適です。

ページの設定と構成

ページの寸法、余白、向きを設定するには、ドキュメント設定へのさまざまなアプローチを示しています。

TextControlの実装

TextControlは、TWIPSで測定されたセクションベースのページ設定を使用します:

using (ServerTextControl tx = new ServerTextControl())
{
    tx.Create();
    tx.Load(html, StreamType.HTMLFormat);

    // Complex page settings through sections
    foreach (Section section in tx.Sections)
    {
        section.Format.PageSize = PageSize.A4;
        section.Format.PageMargins = new PageMargins(
            1440, 1440, 1440, 1440); // TWIPS
        section.Format.Landscape = true;
    }

    tx.Save("output.pdf", StreamType.AdobePDF);
}
using (ServerTextControl tx = new ServerTextControl())
{
    tx.Create();
    tx.Load(html, StreamType.HTMLFormat);

    // Complex page settings through sections
    foreach (Section section in tx.Sections)
    {
        section.Format.PageSize = PageSize.A4;
        section.Format.PageMargins = new PageMargins(
            1440, 1440, 1440, 1440); // TWIPS
        section.Format.Landscape = true;
    }

    tx.Save("output.pdf", StreamType.AdobePDF);
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

IronPDFの実装

IronPDFは直感的なミリメートルベースの測定でRenderingOptionsにページ設定を集中させます:

var renderer = new ChromePdfRenderer();

renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
renderer.RenderingOptions.MarginTop = 25;    // mm
renderer.RenderingOptions.MarginBottom = 25;
renderer.RenderingOptions.MarginLeft = 25;
renderer.RenderingOptions.MarginRight = 25;

var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
var renderer = new ChromePdfRenderer();

renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
renderer.RenderingOptions.MarginTop = 25;    // mm
renderer.RenderingOptions.MarginBottom = 25;
renderer.RenderingOptions.MarginLeft = 25;
renderer.RenderingOptions.MarginRight = 25;

var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

パスワード保護とセキュリティ

どちらのライブラリもPDFのセキュリティ機能をサポートしていますが、APIパターンは異なります。

TextControlの実装

using (ServerTextControl tx = new ServerTextControl())
{
    tx.Create();
    tx.Load(html, StreamType.HTMLFormat);

    SaveSettings saveSettings = new SaveSettings();
    saveSettings.UserPassword = "user123";
    saveSettings.MasterPassword = "owner456";

    tx.Save("protected.pdf", StreamType.AdobePDF, saveSettings);
}
using (ServerTextControl tx = new ServerTextControl())
{
    tx.Create();
    tx.Load(html, StreamType.HTMLFormat);

    SaveSettings saveSettings = new SaveSettings();
    saveSettings.UserPassword = "user123";
    saveSettings.MasterPassword = "owner456";

    tx.Save("protected.pdf", StreamType.AdobePDF, saveSettings);
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

IronPDFの実装

IronPdfはSecuritySettingsプロパティを通してきめ細かいセキュリティコントロールを提供します:

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);

pdf.SecuritySettings.UserPassword = "user123";
pdf.SecuritySettings.OwnerPassword = "owner456";
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights;

pdf.SaveAs("protected.pdf");
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);

pdf.SecuritySettings.UserPassword = "user123";
pdf.SecuritySettings.OwnerPassword = "owner456";
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights;

pdf.SaveAs("protected.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

チームがTextControlの代替案を検討するとき

開発チームは、TextControlに代わるものを評価する必要があります:

コストの最適化

TextControlのライセンスは、開発者1人あたり3,398ドル以上からで、毎年40%の更新が義務付けられているため、3年間の総所有コストは開発者1人あたり5,750ドル以上に達します。 PDF生成に重点を置くチームでは、この価格設定を正当化するのは難しいと考えることがよくあります。

ハードウェアの互換性に関する懸念

第11世代Intelプロセッサーに影響を及ぼすIntel Iris Xe Graphicsのバグが文書化されているため、TextControlの導入にはレジストリの回避策が必要です。 IronPDFのChromiumベースのレンダリングは、このようなハードウェア固有のレンダリングの問題を完全に取り除きます。

PDF-Firstの要件

文書編集ではなくPDF生成が主な使用例である場合、TextControlのワードプロセッサアーキテクチャは不必要な複雑さをもたらします。 DOCX編集機能や埋め込みUIコントロールを必要としないアプリケーションは、IronPdfのPDFを第一に考えたデザインから恩恵を受けることができます。

最新のウェブ技術の統合

TextControlの限られたCSSとJavaScriptのサポートは、現代のフロントエンドフレームワークを使用するアプリケーションのための課題を作成します。 IronPdfはHTML5, CSS3, ES2024 JavaScriptを完全にサポートし、最新のウェブコンテンツを正確にレンダリングします。

シンプルな配置

TextControlのServerTextControlコンテキスト管理とUIコンポーネントの依存関係は、デプロイの複雑さを増加させます。 IronPdfは外部依存や複雑な初期化パターンを持たない自己完結型のNuGetパッケージとして動作します。

テンプレートとメール マージの代替

TextControl独自のメールマージシステムは、マージフィールド付きのDOCXテンプレートを使用しています。 IronPdfはこれを標準的なHTMLテンプレートアプローチに置き換えます:

// Use standard C# string interpolation
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");
// Use standard C# string interpolation
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");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

より複雑なテンプレートシナリオのために、IronPdfはRazorエンジンや他のテンプレートフレームワークと統合しています。 詳細な実装パターンについては、Razor テンプレート統合ガイドを参照してください。

.NETの互換性と将来の準備

どちらのライブラリも、現在の.NET実装をサポートしています。 IronPDFは定期的なアップデートでアクティブな開発を維持し、.NET 8、.NET 9、そして2026年に予定されている.NET 10を含む将来のリリースとの互換性を保証します。このライブラリのAPI全体にわたるasync/awaitのサポートは、C# 13で利用可能な機能とC# 14で予想される機能を含む、最新のC#開発プラクティスに沿っています。

追加のPDF機能

IronPDFは生成だけでなく、その実用性を拡張する文書操作機能を提供します:

結論

TXテキストコントロールとIronPDFはPDF出力を行うツールですが、主な目的は異なります。 TextControlは、DOCX操作と埋め込みUIコントロールを備えた包括的なドキュメントエディタとして優れており、ドキュメントのエクスポート機能とともにリッチなテキスト編集インターフェースを必要とするアプリケーションに最適です。

IronPDFはHTMLやウェブコンテンツからのPDF生成に特化しており、完全なドキュメント編集インフラのオーバーヘッドなしにHTMLやURL、動的に生成されたコンテンツをPDFに変換する必要のある開発者に合理的なソリューションを提供します。 Chromiumベースのレンダリングにより、ブラウザの表示にマッチしたピクセルパーフェクトな出力が保証され、API設計はシンプルさと標準的なWeb開発ワークフローとの統合を優先しています。

TextControlはPDFエクスポートを含む包括的なドキュメント編集ができ、IronPDFはウェブコンテンツから簡単にPDFを生成することができます。 現在TextControlを主にPDF生成に使用しているチームにとって、IronPDFを評価することで、PDFの品質を犠牲にすることなく、大幅なコスト削減とシンプルなデプロイメントが可能になるかもしれません。

その他の実装ガイダンスについては、IronPDFドキュメントチュートリアルを参照してください。