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此模式需要瞭解 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有關 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.PDFAConformance | RenderingOptions.PdfAFormat | 符合 PDF/A 規範 |
DocumentServer.MailMerge | HTML 模板 + 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.comIronPDF實作。
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.comPdfDocument.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.comIronPDF實作。
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對於更複雜的標題設計,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.comURL 至 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.comIronPDF方法
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.comRenderUrlAsPdf 方法可擷取完整的渲染頁面,包括動態產生的內容,非常適合使用 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.comIronPDF實作。
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密碼保護與安全性
這兩個函式庫都支援 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.comIronPDF實作。
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當團隊考慮替代 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對於更複雜的模板情境,IronPDF 可與 Razor 引擎和其他模板框架整合。 請參閱 Razor 模板整合指南,以瞭解詳細的實作模式。
.NET相容性與未來準備
這兩個函式庫都支援目前的 .NET 實作。IronPDFfor .NET 維持積極的開發與定期的更新,確保與 .NET 8、.NET 9 以及未來的版本相容,包括預計在 2026 年推出的 .NET 10。該函式庫在整個 API 中的 async/await 支援符合現代 C# 開發實務,包括 C# 13 中可用的功能以及預期的 C# 14 功能。
額外的 PDF 功能
除了生成功能之外,IronPDF 還提供了可擴展其實用性的文件處理功能:
- 合併 PDFs:將多個文件合併為單一檔案
- 分割文件:將頁面範圍萃取到獨立的 PDF 中
- 數位簽章:應用加密簽章來確保文件的真實性
- 水印:透過 HTML/CSS 加入文字或圖片水印
- IronPDF/A Compliance:產生符合歸檔標準的文件
- Form Filling:以程式化方式填入 PDF 表單欄位
結論
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 文件和涵蓋特定用例和進階功能的 教學。