比較

Text Control 與 IronPDF:技術比較指南

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

當 .NET 開發人員評估 PDF 產生函式庫時,有兩個解決方案經常出現在企業的討論中:TX Text Control 和 IronPDF。 雖然兩者都能產生 PDF 輸出,但它們代表了根本不同的架構哲學。 本技術比較研究了這兩個函式庫,以協助架構師和開發人員為他們的 .NET 應用程式做出明智的決定。

瞭解 TX 文字控制

TX Text Control 是一個全面的文件編輯器元件,強調 DOCX 編輯功能與內嵌的 UI 控件。 PDF 生成是其更廣泛的文件處理架構中的次要功能。 該平台提供廣泛的文件編輯功能,適合需要豐富文字編輯介面的應用程式。

然而,這種全面性會帶來一些開發團隊應該仔細評估的考量:

  • 昂貴的授權:TX Text Control 採用商業授權,每位開發人員的起價為 3,398 美元以上,每年必須更新 40% 以維持更新存取權。
  • PDF 為次要功能:核心架構將文字處理置於 PDF 產生之上,將 PDF 輸出視為附加功能。
  • 已知的硬體問題:記錄在案的 Intel Iris Xe 顯示渲染錯誤會影響第 11 代 Intel 處理器,需要登錄解決方案
  • Bloated Dependencies:包含對 PDF 為重點的工作流程而言可能不必要的文件編輯 UI 元件。
  • 複雜的 API:需要 ServerTextControl 上下文管理和選擇模型模式

了解 IronPDF

IronPDF 採取了根本不同的方法,主要著重於 PDF 的產生,而沒有分層 UI 元件或 DOCX 編輯工具。 這個函式庫的突出之處在於其精簡、量身訂做的設計,特別針對 PDF 的產生與操作進行最佳化,使其成為高效率的 PDF 為先架構工具。

IronPDF的主要特性包括:

  • PDF-First 架構:專為 PDF 生成而設計,提供強大的文件建立與呈現功能
  • Chromium 渲染引擎:利用現代的 HTML5 與 CSS3 標準,並支援完整的 JavaScript 執行功能
  • 成本效益:一次性授權模式免除持續訂閱成本
  • 經過驗證的穩定性:在各種硬體配置上都有可靠的記錄,可避免特定平台的呈現問題
  • 簡易整合:不需要上下文管理或複雜的初始化模式

價格比較

TextControl 和IronPDF之間的授權結構顯示出長期以來的顯著成本差異:

範疇TX 文本控制IronPDF
基本授權每位開發人員 3,398 美元以上每位開發人員一次性 749 美元
年度續約必須達到 40可選支援
4 人小組 (第一年)~$6,749~$2,996
3 年總成本每位開發人員 5,750 美元以上每位開發人員 749 美元
UI 元件捆綁式(潛在臃腫)僅以 PDF 為主
伺服器運行時間額外授權包括

功能比較

下表強調了 TextControl 和IronPDF在關鍵維度上的技術差異:

特點TX 文本控制IronPDF
主要焦點DOCX 編輯生成 PDF
PDF品質基本、附加功能高、核心功能
HTML至PDF是 (次要)是 (主要)
CSS 支援限額完整的 CSS3
JavaScript 執行限額完整的 ES2024
URL轉PDF需要複雜的設定原生支援
頁首/頁腳複雜的 API基於 HTML 的簡單
郵件合併專屬系統HTML 範本
PDF/A合規性
密碼保護
數位簽名
合併 PDF 文件限額全面支援
分割 PDFs限額全面支援
水印複雜的實作簡單的 HTML/CSS
硬體相容性已知的 Intel 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()</代碼新的 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(路徑)</代碼簡單的儲存操作
SaveSettings.PDFAConformanceRenderingOptions.PdfAFormat符合 PDF/A 規範
DocumentServer.MailMergeHTML 模板 + Razor模板合併
<編碼>DocumentTarget.HeadersAndFooters</編碼<編碼>HtmlHeaderFooter</編碼標題/頁腳
<編碼>載入設定</編碼渲染選項配置
<編碼>StreamType.AdobePDF</編碼預設輸出PDF 為主要格式

合併 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();

                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 需要以區段為基礎的標頭/標腳操作,並有明確的類型宣告:

// 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 類別,可接受完整的 HTML 和 CSS 設定:

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 需要透過其 HTML 格式處理程式手動載入 URL,該程式提供有限的 CSS 與 JavaScript 支援:

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 等框架建立的現代網路應用程式。

頁面設定與組態

Configuring page dimensions, margins, and orientation 顯示了不同的文件設定方法。

文字控制實作

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 模式。

文字控制實作

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 的授權費用為每位開發人員 3,398 美元以上,每年必須續費 40%,因此每位開發人員的三年總擁有成本達到 5,750 美元以上。 主要專注於 PDF 製作的團隊經常發現,當有成本低得多的替代品時,這個定價很難合理。

硬體相容性問題

文件中記載的 Intel Iris Xe Graphics Bug 影響第 11 代 Intel 處理器,需要對 TextControl 部署進行註冊變通。IronPDF基於 Chromium 的渲染完全消除了這些特定硬體的渲染問題。

PDF-第一需求

當 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 實作。IronPDFfor .NET 維持積極的開發與定期的更新,確保與 .NET 8、.NET 9 以及未來的版本相容,包括預計在 2026 年推出的 .NET 10。該函式庫在整個 API 中的 async/await 支援符合現代 C# 開發實務,包括 C# 13 中可用的功能以及預期的 C# 14 功能。

額外的 PDF 功能

除了生成功能之外,IronPDF 還提供了可擴展其實用性的文件處理功能:

結論

TX Text Control 和IronPDF儘管都能產生 PDF 輸出,但兩者的主要用途不同。 TextControl 是一個全面的文件編輯器,具有 DOCX 操作功能和內嵌的 UI 控制項,非常適合需要豐富文字編輯介面以及文件匯出功能的應用程式。

IronPDF 專注於從 HTML 和網頁內容產生 PDF,為需要將 HTML、URL 或動態產生的內容轉換為 PDF 的開發人員提供簡化的解決方案,而無需完整的文件編輯基礎架構的開銷。 其基於 Chromium 的渲染可確保像素完美的輸出與瀏覽器顯示相匹配,而其 API 設計則以簡單性及與標準 Web 開發工作流程的整合為優先考量。

兩者之間的選擇取決於專案需求:TextControl 較為適合全面性的文件編輯與 PDF 匯出,而從網頁內容直接產生 PDF 則符合IronPDF的優勢。 對於目前主要使用 TextControl 來產生 PDF 的團隊而言,評估IronPDF可能會發現在不犧牲 PDF 品質的前提下,大幅降低成本和簡化部署的機會。

如需其他實施指導,請參閱 IronPDF 文件和涵蓋特定用例和進階功能的 教學