選擇最佳C# PDF程式庫的終極指南
企業採購僅限報價與自助服務公開價永久授權:Foxit PDF SDK for .NET 和 Iron Suite 位於該界線的兩側。Foxit 銷售其開發者 SDK 僅限報價,沒有公佈的美金定價,且模組化附加結構意味著 OCR、轉換、刪減和比較都需在核心之上分別獲得許可。Iron Suite以每位開發者 $2,998 的公佈永久價格出貨,涵蓋所有 10 款 Iron 產品,只需一個授權,就可以免版稅部署授權的席位,並提供 SaaS 或 OEM 場景的單獨再分發附加選項。
本文以採購決策的實際基礎著手:每套套件的定價、授權實際涵蓋內容及需要單獨協商的附加選項。 隨後是針對整合它的工程師提供的逐項功能開發者詳細資訊。
快速比較
| 尺寸 | Foxit PDF SDK | Iron Suite |
|---|---|---|
| 定價定位 | 開發者 SDK 僅限報價; PDF 壓縮服務產品每年約 $375/yr,處理 12,000 頁。 | Lite $2,998 / Plus $4,498 / Professional $8,998 / Unlimited $17,998 (Enterprise custom). 所有10個產品的價格相當於2個,節省75% |
| 授權模式 | 商業基於報價的每位開發者+每次部署的版稅; modular add-on licensing | 每開發者永久; 免版稅基礎+ 在線服務/OEM 的再分發附加選項。 |
| 捆綁包的組成部分 | Core PDF SDK + 轉換、OCR、刪減、比較附加選項; PDF 壓縮單獨出售 | 10 products (PDF, Word, Excel, PPT, OCR, Barcode, QR, Print, ZIP, WebScraper) |
| 格式/功能覆蓋 | 以 PDF 為中心; 通過轉換附加選項處理 Office; 沒有原生 Word/Excel/PPT 操作,沒有條碼/QR,沒有網頁抓取 | PDF + 原生 Word + Excel + PPT + OCR + 條碼 + QR + 列印 + ZIP + 網頁抓取 |
| 跨平台/雲 | Windows 為主; Linux/macOS 通過核心 SDK; iOS/Android/MAUI/網頁作為單獨的 SDK 家族 | Windows、Linux、macOS、Docker、Azure、AWS Lambda |
| .NET運行時支持 | .NET Framework 4.0, .NET Core 2.1, .NET 6.0; .NET 8+ 通過核心 SDK 版本 | .NET Framework 4.6.2+, .NET Core, .NET 6/7/8/9/10 |
| 目標市場 | 需要原生引擎吞吐量的企業/ISV PDF 圖書館 | 希望單獨獨立文件 + 認識包的 .NET 開發者和 ISV |
| 供應商 | Foxit Software Inc. | Iron Software |
Foxit PDF SDK 是僅限報價的商業採購,包括每位開發者席位加每次部署的版稅加上單獨許可的附加選項 (轉換、OCR、刪減、比較)。Iron SuiteLite 是每位開發者 $2,998,適用於完整的十種產品的捆綁包,永久並對已授權席位免版稅。 決策取決於 Foxit 的 PDF 規範覆蓋範圍和長期的 ISV/OEM 記錄是否證明了基於報價和附加選項的採購途徑,相對於涵蓋更廣泛格式和識別面的固定公佈價格。
定價和授權
Foxit PDF SDK 採用基於報價的商業模式。 開發者 SDK 沒有公佈的美金價格級別; Foxit 自己的知識庫確認定價是通過銷售談判協商的,模型通常結構為每位開發者席位費加上每次部署或運行時的版稅。 模組化附加結構意指 OCR、轉換、刪減和比較均為單獨許可的線項,而非包含於基礎 SDK。 相鄰的服務產品 PDF 壓縮器,單獨從開發者 SDK 銷售,每年從約 $375 起,用於處理 12,000 頁。 確切的開發者級別定價超出'聯繫銷售'很清楚。
Iron Suite 銷售為每位開發者永久許可,每位開發者 $2,998,包含單次購買的全部十個組件。 營銷立場,"10 種產品價格等於 2 種,節省 75%",反映捆綁折扣與單獨購買 Iron 產品之間的對比。 基礎許可是對授權席位免版稅; 基礎許可以外的 SaaS, OEM 和分佈-再分發場景由單獨的再分發附加選項涵蓋。
Foxit 的採購是分層的:每位開發者席位費加上每次部署的版稅加上 OCR、轉換、刪減和比較的單獨許可附加選項,均需通過銷售對話達成。Iron Suite的採購為自助式,按級別公佈的美金價格,永久,SaaS 和 OEM 再分發的唯一獨立定價項目為再分發附加選項。
什麼是Foxit PDF SDKfor .NET
Foxit PDF SDK for .NET 是 Foxit Software 的開發者工具包,用於將 PDF 功能嵌入 .NET 應用中。 核心 SDK 在 NuGet 發布為 Foxit.SDK.Dotnet; 版本 11.1.0.1 (2026 年 4 月) 目標 .NET Framework 4.0, .NET Core 2.1 和.NET 6.0,.NET 8+ 通過.NET Core SDK 版涵蓋。 該產品定位於與 Adobe PDF 圖書館和 Apryse (前稱 PDFTron) 競爭企業和 ISV PDF 工作負荷; 它競爭於原生引擎原本處理量和 PDF 規範覆蓋的深度,而非開發者的人體工程學或捆綁包寬度。
SDK 是模組化的:核心處理查看、渲染、編輯、註釋、簽名和表單,而專業能力作為單獨激活的附加選項許可。
捆綁的組件和附加選項:
- 核心 PDF SDK: 查看、渲染、編輯、註釋、簽字、填表
- 轉換附加選項: Office (Word, Excel, PowerPoint) ↔ PDF
- OCR 附加選項: 光柵 PDF 和圖像中的文字識別
- 刪減附加選項: 工業級文字/區域刪除
- 比較附加選項: 結構和視覺 PDF 比較
- PDF 壓縮器: 單獨的服務型產品 (由 SDK 單獨出售)
什麼是Iron Suite
Iron Suite 是Iron Software的十種產品 .NET 套件,其中 IronPDF 位於中心。 任何主要需求是 PDF 生成、簽名、刪減或光柵化的團隊從 IronPDF 開始,並在相同許可下繼承其餘的捆綁包。 作為單次永久每位開發者許可銷售,分五級 (Lite, Plus, Professional, Unlimited, Enterprise) 從 $2,998 開始。 對授權席位免版稅; SaaS 和 OEM 再分發由單獨的再分發附加選項涵蓋。
按與 PDF 主導工作流程相關性分組的十個組件:
- IronPDF (PDF 錨點):帶有捆綁 Chromium 的 HTML 到 PDF 和 URL 到 PDF 渲染; 通過
PdfDocument.Merge進行原生合併和分割; 通過具有正則表達式的RedactTextOnAllPages實現真實文字紅底化; PKCS#12、HSM (PKCS#11)、TSA 時間戳和對 eIDAS 和 ESIGN 對齊的多方簽名; AES 加密和細化權限; PDF/A-1 到 PDF/A-4 (包括 4E/4F); PDF/UA-1 和 PDF/UA-2; AcroForm 填寫與平面; 完整的字體管理 (自定義嵌入,web 字體和 TrueType Collection 支持);RasterizeToImageFiles到 PNG/JPEG/TIFF,具 DPI 控制;CompressAndSaveAs和SaveAsLinearized用於快速網頁視圖; 文字抽取。 - Office: IronWord (DOCX 配備段落/文字運行物件圖表), IronXL (XLSX 公式重算), IronPPT (PPTX 創作)。
- 識別: IronOCR (Tesseract 5,支持 125 種語言,手寫以~90% 英語), IronBarcode (30+ 型別), IronQR (ML 支持的批量
ReadPdfs讀取)。 - 工具: IronPrint (靜默和對話列印), IronZIP (具 AES 的 ZIP/TAR/GZIP/BZIP2), IronWebScraper (嵌入式抓取)。
功能比較
PDF渲染
PDF 渲染(將現有的 PDF 文件轉換為顯示、縮略圖或下游基於圖像的處理的像素)是 Foxit 的一個標題功能。 Foxit 的原生引擎多執行緒渲染頁面直接到位圖,不依賴外部的瀏覽器引擎。
//Foxit PDF SDK— render existing PDF to bitmap
using foxit;
using foxit.common;
using foxit.common.fxcrt;
using foxit.pdf;
Library.Initialize(sn, key);
using PDFDoc doc = new PDFDoc("input.pdf");
doc.Load(null);
PDFPage page = doc.GetPage(0);
page.StartParse((int)PDFPage.ParseFlags.e_ParsePageNormal, null, false);
int width = (int)page.GetWidth();
int height = (int)page.GetHeight();
Matrix2D matrix = page.GetDisplayMatrix(0, 0, width, height, page.GetRotation());
Bitmap bitmap = new Bitmap(width, height, Bitmap.DIBFormat.e_DIBArgb, IntPtr.Zero, 0);
bitmap.FillRect(0xFFFFFFFF, null);
Renderer renderer = new Renderer(bitmap, false);
renderer.StartRender(page, matrix, null);
Library.Release();//Foxit PDF SDK— render existing PDF to bitmap
using foxit;
using foxit.common;
using foxit.common.fxcrt;
using foxit.pdf;
Library.Initialize(sn, key);
using PDFDoc doc = new PDFDoc("input.pdf");
doc.Load(null);
PDFPage page = doc.GetPage(0);
page.StartParse((int)PDFPage.ParseFlags.e_ParsePageNormal, null, false);
int width = (int)page.GetWidth();
int height = (int)page.GetHeight();
Matrix2D matrix = page.GetDisplayMatrix(0, 0, width, height, page.GetRotation());
Bitmap bitmap = new Bitmap(width, height, Bitmap.DIBFormat.e_DIBArgb, IntPtr.Zero, 0);
bitmap.FillRect(0xFFFFFFFF, null);
Renderer renderer = new Renderer(bitmap, false);
renderer.StartRender(page, matrix, null);
Library.Release();Imports foxit
Imports foxit.common
Imports foxit.common.fxcrt
Imports foxit.pdf
Library.Initialize(sn, key)
Using doc As New PDFDoc("input.pdf")
doc.Load(Nothing)
Dim page As PDFPage = doc.GetPage(0)
page.StartParse(CInt(PDFPage.ParseFlags.e_ParsePageNormal), Nothing, False)
Dim width As Integer = CInt(page.GetWidth())
Dim height As Integer = CInt(page.GetHeight())
Dim matrix As Matrix2D = page.GetDisplayMatrix(0, 0, width, height, page.GetRotation())
Dim bitmap As New Bitmap(width, height, Bitmap.DIBFormat.e_DIBArgb, IntPtr.Zero, 0)
bitmap.FillRect(&HFFFFFFFFUI, Nothing)
Dim renderer As New Renderer(bitmap, False)
renderer.StartRender(page, matrix, Nothing)
End Using
Library.Release()//Iron Suite— IronPDF (HTML-to-PDF generation as the primary path)
using IronPdf;
var renderer = new ChromePdfRenderer();
string html = "<h1>Invoice 2026-0428</h1><p>Total due: $1,240.00</p>";
using var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("invoice.pdf");//Iron Suite— IronPDF (HTML-to-PDF generation as the primary path)
using IronPdf;
var renderer = new ChromePdfRenderer();
string html = "<h1>Invoice 2026-0428</h1><p>Total due: $1,240.00</p>";
using var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("invoice.pdf");Imports IronPdf
Dim renderer As New ChromePdfRenderer()
Dim html As String = "<h1>Invoice 2026-0428</h1><p>Total due: $1,240.00</p>"
Using pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("invoice.pdf")
End UsingFoxit 的 API 表面反映其原生 C++ 起源:明確的 Library.Initialize / Library.Release,手動矩陣構建,位圖分配,以及多步渲染操作。 IronPDF 的路徑是反向的; 通過捆綁 Chromium 引擎從 HTML/CSS 生成 PDF,然後操作生成的文件。 大尺度的現有 PDF 高保真度渲染是 Foxit 原生引擎為之設計的案例——IronPDF 採用不同的機制,通過捆綁的 Chromium 管道從網頁樣式輸入生成新的 PDF。IronPDF 的捆綁 Chromium 在單一 NuGet 套件中出貨 (IronPdf.Linux 包括完整的 Chrome 瀏覽器大約 280 MB,不需要單獨的 Chromium 安裝管道,並且沒有運行時 BrowserFetcher 下載),操作上比起在 Linux 容器和 AWS Lambda 部署中處理主機上的 Chromium 或 Puppeteer/Playwright 運行時下載更簡單。
PDF 編輯 (頁面操作)
插入、移除、重排頁面是任何 PDF 工作流程中的例行操作,合成來自多個來源的報告,在發布前移除草稿頁,或在現有文件上建構封面。
//Foxit PDF SDK— insert / remove pages
using foxit.common;
using foxit.pdf;
Library.Initialize(sn, key);
using PDFDoc doc = new PDFDoc("input.pdf");
doc.Load(null);
PDFPage inserted = doc.InsertPage(1, 612f, 792f);
int lastIndex = doc.GetPageCount() - 1;
doc.RemovePage(lastIndex);
doc.SaveAs("edited.pdf", (int)PDFDoc.SaveFlags.e_SaveFlagNormal);
Library.Release();//Foxit PDF SDK— insert / remove pages
using foxit.common;
using foxit.pdf;
Library.Initialize(sn, key);
using PDFDoc doc = new PDFDoc("input.pdf");
doc.Load(null);
PDFPage inserted = doc.InsertPage(1, 612f, 792f);
int lastIndex = doc.GetPageCount() - 1;
doc.RemovePage(lastIndex);
doc.SaveAs("edited.pdf", (int)PDFDoc.SaveFlags.e_SaveFlagNormal);
Library.Release();Imports foxit.common
Imports foxit.pdf
Library.Initialize(sn, key)
Using doc As New PDFDoc("input.pdf")
doc.Load(Nothing)
Dim inserted As PDFPage = doc.InsertPage(1, 612.0F, 792.0F)
Dim lastIndex As Integer = doc.GetPageCount() - 1
doc.RemovePage(lastIndex)
doc.SaveAs("edited.pdf", CInt(PDFDoc.SaveFlags.e_SaveFlagNormal))
End Using
Library.Release()// NuGet: Install-Package IronPdf
// Docs: https://ironpdf.com/how-to/merge-or-split-pdfs/
using IronPdf;
using System.Collections.Generic;
class Program
{
static void Main()
{
// PdfDocument.Merge accepts an array or params list of PdfDocument objects.
// Order is preserved, and metadata, bookmarks, and annotations are retained.
string[] inputs = { "invoice.pdf", "terms.pdf", "appendix.pdf" };
List<PdfDocument> parts = new List<PdfDocument>();
foreach (string path in inputs)
parts.Add(PdfDocument.FromFile(path));
PdfDocument merged = PdfDocument.Merge(parts.ToArray());
merged.SaveAs("contract-package.pdf");
}
}// NuGet: Install-Package IronPdf
// Docs: https://ironpdf.com/how-to/merge-or-split-pdfs/
using IronPdf;
using System.Collections.Generic;
class Program
{
static void Main()
{
// PdfDocument.Merge accepts an array or params list of PdfDocument objects.
// Order is preserved, and metadata, bookmarks, and annotations are retained.
string[] inputs = { "invoice.pdf", "terms.pdf", "appendix.pdf" };
List<PdfDocument> parts = new List<PdfDocument>();
foreach (string path in inputs)
parts.Add(PdfDocument.FromFile(path));
PdfDocument merged = PdfDocument.Merge(parts.ToArray());
merged.SaveAs("contract-package.pdf");
}
}Imports IronPdf
Imports System.Collections.Generic
Module Program
Sub Main()
' PdfDocument.Merge accepts an array or params list of PdfDocument objects.
' Order is preserved, and metadata, bookmarks, and annotations are retained.
Dim inputs As String() = {"invoice.pdf", "terms.pdf", "appendix.pdf"}
Dim parts As New List(Of PdfDocument)()
For Each path As String In inputs
parts.Add(PdfDocument.FromFile(path))
Next
Dim merged As PdfDocument = PdfDocument.Merge(parts.ToArray())
merged.SaveAs("contract-package.pdf")
End Sub
End ModuleIronPDF 通過統一的 PdfDocument 物件模型公開等效的頁面級操作:通過 PdfDocument.FromFile(...) 載入,通過靜態 PdfDocument.Merge(...) 組裝,頁面範圍複製和刪除,及 SaveAs(...)。 編輯直接觸及 PDF 物件模型; HTML 回合只在從 HTML 建立 PDF 時發生,而不是在操作期間。 對比在於結構:Foxit 的每操作 API 曝露原生引擎底層結構 (明確的 Initialize/Release,保存標記列舉); IronPDF 通過 using 隱式生命周期管理統一生成和編輯一個單一的管理物件模型。
Office到PDF轉換
在伺服器上不需要安裝 Microsoft Office 將 Word、Excel 和 PowerPoint 文件轉換為 PDF 是一種常見的伺服器端需求。 Foxit 通過一個單獨許可的轉換附加選項來處理此問題。
//Foxit PDF SDK— Conversion add-on (Word → PDF)
using foxit.common;
using foxit.addon.conversion;
Library.Initialize(sn, key);
using var settings = new Word2PDFSettingData();
Convert.FromWord("input.docx", string.Empty, "output.pdf", settings);
Library.Release();//Foxit PDF SDK— Conversion add-on (Word → PDF)
using foxit.common;
using foxit.addon.conversion;
Library.Initialize(sn, key);
using var settings = new Word2PDFSettingData();
Convert.FromWord("input.docx", string.Empty, "output.pdf", settings);
Library.Release();Imports foxit.common
Imports foxit.addon.conversion
Library.Initialize(sn, key)
Using settings As New Word2PDFSettingData()
Convert.FromWord("input.docx", String.Empty, "output.pdf", settings)
End Using
Library.Release()Iron Suite 不出貨一個單一的專用 DOCX 至 PDF 轉換 API; 相同的結果可以通過組合 IronWord (適用於任何 DOCX 操作) 與 IronPDF (適用於 PDF 生成),或直接通過 IronPDF 的 HTML 到 PDF 路徑輻射源內容來實現。 以 Office來源文件轉換為主要工作流程,即是 Foxit 的轉換附加選項所銷售的,而Iron Suite通過組合 IronWord 再加上 IronPDF (或直接通過 IronPDF 的 HTML 到 PDF 路徑輸入來源內容) 以實現相同的結果,而不需要在席位費上層疊一個單獨的附加選項許可。
光學字元識別(OCR)
OCR,從掃描的 PDF 和光柵圖像中提取機器可讀文字,是團隊選擇一個 PDF SDK 作為除純生成外的最常見原因之一。
//Foxit PDF SDK— OCR add-on
using foxit.common;
using foxit.addon.ocr;
Library.Initialize(sn, key);
if (OCREngine.Initialize("./ocr_resource") != ErrorCode.e_ErrSuccess) return;
OCREngine.SetLanguages("English");
// Configure OCRCallback to consume recognized content...
OCREngine.Release();
Library.Release();//Foxit PDF SDK— OCR add-on
using foxit.common;
using foxit.addon.ocr;
Library.Initialize(sn, key);
if (OCREngine.Initialize("./ocr_resource") != ErrorCode.e_ErrSuccess) return;
OCREngine.SetLanguages("English");
// Configure OCRCallback to consume recognized content...
OCREngine.Release();
Library.Release();Imports foxit.common
Imports foxit.addon.ocr
Library.Initialize(sn, key)
If OCREngine.Initialize("./ocr_resource") <> ErrorCode.e_ErrSuccess Then Return
OCREngine.SetLanguages("English")
' Configure OCRCallback to consume recognized content...
OCREngine.Release()
Library.Release()//Iron Suite— IronOCR
using IronOcr;
var ocr = new IronTesseract();
using var input = new OcrInput("scanned-document.png");
input.Deskew();
input.DeNoise();
var result = ocr.Read(input);
Console.WriteLine($"Confidence: {result.Confidence}");
Console.WriteLine($"Extracted text: {result.Text}");//Iron Suite— IronOCR
using IronOcr;
var ocr = new IronTesseract();
using var input = new OcrInput("scanned-document.png");
input.Deskew();
input.DeNoise();
var result = ocr.Read(input);
Console.WriteLine($"Confidence: {result.Confidence}");
Console.WriteLine($"Extracted text: {result.Text}");Imports IronOcr
Dim ocr As New IronTesseract()
Using input As New OcrInput("scanned-document.png")
input.Deskew()
input.DeNoise()
Dim result = ocr.Read(input)
Console.WriteLine($"Confidence: {result.Confidence}")
Console.WriteLine($"Extracted text: {result.Text}")
End UsingFoxit 的 OCR 引擎使用一個明確的生命周期 (Initialize -> SetLanguages ->基於回調的消費 -> Release),具有單獨分佈的資源文件和針對 OCR 模組啟動的許可密鑰。 IronOCR 的 API 直接提供結果,內建預處理助手 (Deskew, DeNoise) 和單個 Read 調用。 權衡反映了更廣泛的引擎與套件框架:Foxit 提供了更多的控制在於 OCR 管道;IronOCR 更快即可達成有效結果。
涂改
工業級刪減,從 PDF 中永久移除敏感內容而非只覆蓋黑框(可解析出來),是 Foxit 其企業推銷的重心之一。 它被用於法律、醫療保健和政府工作流程中,經刪減的內容輸出需承受法證恢復嘗試。
//Foxit PDF SDK— Redaction add-on
using foxit.common;
using foxit.common.fxcrt;
using foxit.pdf;
using foxit.addon;
using foxit.pdf.annots;
Library.Initialize(sn, key);
using PDFDoc doc = new PDFDoc("input.pdf");
doc.Load(null);
PDFPage page = doc.GetPage(0);
page.StartParse((int)PDFPage.ParseFlags.e_ParsePageNormal, null, false);
Redaction redaction = new Redaction(doc);
RectFArray rects = new RectFArray();
rects.Add(new RectF(100, 100, 300, 130));
Redact redact = redaction.MarkRedactAnnot(page, rects);
if (redaction.Apply())
{
doc.SaveAs("redacted.pdf", (int)PDFDoc.SaveFlags.e_SaveFlagNormal);
}
Library.Release();//Foxit PDF SDK— Redaction add-on
using foxit.common;
using foxit.common.fxcrt;
using foxit.pdf;
using foxit.addon;
using foxit.pdf.annots;
Library.Initialize(sn, key);
using PDFDoc doc = new PDFDoc("input.pdf");
doc.Load(null);
PDFPage page = doc.GetPage(0);
page.StartParse((int)PDFPage.ParseFlags.e_ParsePageNormal, null, false);
Redaction redaction = new Redaction(doc);
RectFArray rects = new RectFArray();
rects.Add(new RectF(100, 100, 300, 130));
Redact redact = redaction.MarkRedactAnnot(page, rects);
if (redaction.Apply())
{
doc.SaveAs("redacted.pdf", (int)PDFDoc.SaveFlags.e_SaveFlagNormal);
}
Library.Release();Imports foxit.common
Imports foxit.common.fxcrt
Imports foxit.pdf
Imports foxit.addon
Imports foxit.pdf.annots
Library.Initialize(sn, key)
Using doc As New PDFDoc("input.pdf")
doc.Load(Nothing)
Dim page As PDFPage = doc.GetPage(0)
page.StartParse(CInt(PDFPage.ParseFlags.e_ParsePageNormal), Nothing, False)
Dim redaction As New Redaction(doc)
Dim rects As New RectFArray()
rects.Add(New RectF(100, 100, 300, 130))
Dim redact As Redact = redaction.MarkRedactAnnot(page, rects)
If redaction.Apply() Then
doc.SaveAs("redacted.pdf", CInt(PDFDoc.SaveFlags.e_SaveFlagNormal))
End If
End Using
Library.Release()// NuGet: Install-Package IronPdf
// Docs: https://ironpdf.com/how-to/redact-text/
using IronPdf;
class Program
{
static void Main()
{
PdfDocument pdf = PdfDocument.FromFile("employee-record.pdf");
// RedactTextOnAllPages performs true redaction:
// the text is removed from the PDF structure, not just covered visually.
pdf.RedactTextOnAllPages("Jane Doe");
pdf.RedactTextOnAllPages("123-45-6789");
pdf.RedactTextOnAllPages("EMP-44213");
pdf.SaveAs("employee-record-redacted.pdf");
}
}// NuGet: Install-Package IronPdf
// Docs: https://ironpdf.com/how-to/redact-text/
using IronPdf;
class Program
{
static void Main()
{
PdfDocument pdf = PdfDocument.FromFile("employee-record.pdf");
// RedactTextOnAllPages performs true redaction:
// the text is removed from the PDF structure, not just covered visually.
pdf.RedactTextOnAllPages("Jane Doe");
pdf.RedactTextOnAllPages("123-45-6789");
pdf.RedactTextOnAllPages("EMP-44213");
pdf.SaveAs("employee-record-redacted.pdf");
}
}Imports IronPdf
Class Program
Shared Sub Main()
Dim pdf As PdfDocument = PdfDocument.FromFile("employee-record.pdf")
' RedactTextOnAllPages performs true redaction:
' the text is removed from the PDF structure, not just covered visually.
pdf.RedactTextOnAllPages("Jane Doe")
pdf.RedactTextOnAllPages("123-45-6789")
pdf.RedactTextOnAllPages("EMP-44213")
pdf.SaveAs("employee-record-redacted.pdf")
End Sub
End ClassIronPDF 支持通過 RedactTextOnAllPages 進行文字級別刪減 (及正則表達式模式變體和頁面特定超載),從 PDF 流中移除匹配內容而非僅視覺上覆蓋。 Foxit 的 Redaction.MarkRedactAnnot 保留區域性刪減優勢:在頁面上標記 RectF 區域並通過 redaction.Apply() 應用,適合刪減目標為已知視覺區域 (簽名塊、標題條、被刪減圖像)的工作流程,而不是已知字串。 對於法律發現和合規工作流程,結合在同一引擎中的基於字串和基於區域的刪減,Foxit 的 Redaction.MarkRedactAnnot 是針對該用例的 API - 對於個人身份資訊、識別符號和帳號號碼的字串驅動刪減,IronPDF 的 RedactTextOnAllPages 是更直接的途徑。
為何選擇Iron Suite作為單一供應商PDF + 光學字元識別(OCR)+ 條碼工作流程的合適方案
當您的 .NET 文件工作負載範圍包括 PDF 生成、OCR、條碼閱讀和 Office 格式操控,且希望與一個自助公開定價的供應商保持單一供應商關係時,選擇 Iron Suite。 Foxit 在 PDF 的深度是確實存在的; 條碼閱讀和寫入以及 PowerPoint 生成位於 Foxit 目錄之外,並且每個附加項 (轉換、OCR、刪減、比較) 各自具有許可啟動。
Iron Suite 的結構優勢為此買方配置文件:
- 單一捆綁購買:十個產品在一個許可下; 沒有模組化附加啟動,沒有單獨 SKU 用於 OCR 或條碼。
- 本機條碼、QR 和 PPT:包含; Foxit 沒有條碼或 PowerPoint 模塊。
- 自助採購:公開的美金價格,永久許可; Foxit 需要為每位開發者提供報價。
- 免版稅基本許可:沒有每次部署運行時的版稅; 可用於 SaaS/OEM 的再分發附加選項作為單獨的、可預見的線項。
- 程式碼優先 DOCX/XLSX/PPTX:IronWord、IronXL、IronPPT 直接處理 Office 格式,而不需要 Office 到 PDF 轉換層。
Iron Suite如何與Foxit PDF SDK不同
- PDF 核心加上單獨許可的轉換、OCR、刪減和比較附加選項:那是Foxit PDF SDK的路徑,條碼、QR、列印和抓取完全位於目錄之外。Iron Suite是一個 10 產品套件,涵蓋 PDF、Office、識別、列印、ZIP 和抓取,在一個許可下。
- 價格透明。Iron Suite在網站上發布美金級別;Foxit 的開發者 SDK 僅限報價,無公共價格表。
- 許可模型。Iron Suite是永久的; Foxit 是每位開發者席位加每次部署版稅,並且每個附加選項都單獨許可。
- API 表面。Iron Suite使用慣常 .NET (
new ChromePdfRenderer().RenderHtmlAsPdf(...)); Foxit 的 .NET 綁定表面原生管道 (Library.Initialize,StartParse, 手動矩陣和位圖分配,明確的 Release)。 - Foxit 的企業推銷,內容在哪裡。 生 PDF 規範角落 (PDF/A 線性化、嵌入字體、先進 AcroForm/XFA) 和區域性刪除 (
Redaction.MarkRedactAnnot) 是 Foxit 的推銷所依據的工作負載,外加一個有長期 ISV 記錄的一手 Office 轉換附加選項。 IronPDF 通過PdfAVersions列舉支持完整的 PDF/A 合規系列 (A-1a, A-1b, A-2a, A-2b, A-3a, A-3b, 遵循 ISO 19005-4:2020 的 PDF/A-4/4E/4F 系列), 在基礎捆綁中附帶文字級刪除 (RedactTextOnAllPages,支持正則表達式),提供完整的字體管理 (Fonts.Add().Embed(),通過WaitFor.AllFontsLoaded()支持 web 字體,支持 TrueType Collection),所以 PDF/A 不是 Foxit 獨享,也不是字串驅動的刪減或字體控制。IronPDF 也附帶專用的 PDF/UA 可存取支持,RenderHtmlAsPdfUA(html)在單次調用中生成標記可存取 PDF (預設 PDF/UA-1,還支持 PDF/UA-2),開箱即用被記錄為滿足 Section 508 和 WCAG 2.0 AA。 - 跨平台堆棧形狀。 Foxit 由單一供應商提供獨立的 SDK 家族,覆蓋桌面、移動裝置 (iOS/Android/MAUI),和網頁;Iron Suite聚焦於 .NET 伺服器、桌面和雲端 (一種不同的分發形態)。
結論
Foxit 和Iron Suite解答不同的問題。 Foxit 解答一個想要基於報價的、模組化的原生 PDF 引擎,並且有著長期的 ISV/OEM 記錄,還有 OCR、轉換和區域性刪減附加選項的採購。Iron Suite解答一個想要單一永久捆綁,涵蓋 PDF (具標準級功能如上所述)、Office、識別和相鄰的工具,以公佈美金價格,基礎許可是免版稅部署的採購。 對於 .NET 團隊,文件工作負載覆蓋 PDF、條碼、Office 和 OCR,Iron Suite 捆綁包從 $2,998 開始,並可在 ironsoftware.com/csharp/suite 獲得。
