IronPDF 與 iTextSharp:用 C 語言讀 PDF 文件
IronPDF 提供了一個現代化的 C# API,用於讀取 PDF 文件,其語法比 iTextSharp 更簡潔。它支援文字擷取、圖像解析和表單資料訪問,而 iTextSharp 需要 AGPL 許可才能用於商業用途,因此 IronPDF 是企業應用程式的首選。
PDF(可攜式文件格式)是一種廣泛使用的文件格式,用於一致且安全地共用文件。 在文件管理系統和報表工具等各種應用程式中,使用 C# 讀取和操作此類文件是很常見的。 本文比較了 C# 中兩個流行的 PDF 文件讀取庫:IronPDF 和 iTextSharp(最新的 .NET 庫 iText)。
IronPDF 是 Iron Software 開發的一個完整的 C# 庫,它提供了處理 PDF 文件的豐富功能。 它使您能夠流暢地建立、編輯和操作 PDF 文件。 IronPDF 以其簡潔易用而聞名,是快速將 PDF 功能整合到您的應用程式中的絕佳選擇。 該庫使用 Chrome 渲染引擎,確保精確渲染並支援現代 Web 標準。
iTextSharp 是另一個用於在 C# 中處理 PDF 檔案的熱門程式庫。 它已在業內廣泛應用多年。 但是,必須了解的是,iTextSharp 的許可已更改為 AGPL(Affero 通用公共授權),這對商業應用有重大影響。 根據 AGPL 協議,如果您的應用程式使用 iTextSharp,則必須向使用者提供應用程式的整個原始程式碼——這項要求通常與專有軟體開發不相容。 此次許可變更促使許多企業尋求其他替代方案,例如 IronPDF,它提供對商業友好的許可。
如何在 C# 中使用 IronPDF 和 iTextSharp 讀取 PDF 檔案?
- 在 Visual Studio 中建立一個新的 C# 項目,比較 IronPDF 和 iTextSharp 在讀取 PDF 檔案方面的效能。
- 透過 NuGet 套件管理器將 IronPDF 和 iTextSharp 庫安裝到您的專案中。
- 使用 IronPDF 直覺的 API 讀取 PDF 檔案以提取文字。
- 使用 iTextSharp 更複雜的物件模型讀取 PDF 檔案。
本教程的先決條件是什麼?
- Visual Studio:確保您已安裝 Visual Studio 或任何其他 C# 開發環境。 IronPDF 支援 Windows、Linux 和 macOS 環境。
- NuGet 套件管理器:確保您可以使用 NuGet 管理專案中的套件,以便進行進階安裝。
如何建構開發環境?
首先,建立一個 C# 控制台應用程式。 開啟 Visual Studio 並選擇"建立新專案"。 選擇控制台應用程式類型。 對於生產應用,如果您打算進行基於雲端的 PDF 處理,請考慮查看我們關於 Azure 部署或 AWS 部署的指南。
請按以下格式提供您的項目名稱。 遵循 .NET 命名約定,請使用PascalCase作為專案名稱,以保持與企業標準的一致性。
請為您的專案選擇所需的 .NET 版本。 IronPDF 支援 .NET Framework、.NET Core 和 .NET 5+,為傳統應用程式和現代應用程式提供了靈活性。
完成此操作後,Visual Studio 將產生一個具有必要結構的新項目,用於比較 PDF 閱讀能力。
如何安裝 IronPDF 和 iTextSharp 函式庫?
我應該使用哪個套件管理器來安裝 iTextSharp?
您可以從 NuGet 套件管理器安裝 iTextSharp。 最新版本以 iText 軟體包的形式提供。 請注意,與 IronPDF 相比,其下載量相對較低,反映出許多開發者對 AGPL 許可的擔憂。
或從 Visual Studio 套件管理員中安裝,如下所示。 在軟體包管理器中搜尋 iText,然後點選安裝。 請注意,接受 AGPL 許可協議會對您的專案的分發產生法律影響。
如何透過 NuGet 安裝 IronPDF?
您可以從 NuGet 套件管理器安裝 IronPDF,如下所示。 請注意下載量顯著更高(830萬),顯示其在商業應用中得到更廣泛的採用。
或從 Visual Studio 套件管理器中安裝,如下所示。 在套件管理器中搜尋 IronPDF:C# PDF 庫,然後按一下"安裝"。 安裝過程非常簡單,包含了Chrome渲染所需的所有相依性。
如何使用 IronPDF 讀取 PDF 文件中的文字?
將以下程式碼新增至您的 Program.cs 檔案中,並提供包含指定內容的範例 PDF 文件。 IronPDF 擅長從複雜的 PDF 文件中提取文本,包括具有多列、嵌入式字體和各種編碼的 PDF 文件。
using IronPdf;
// Begin the comparison of IronPDF and iTextSharp for reading PDFs in C#
Console.WriteLine("Comparison of IronPDF And iTextSharp Read PDF Files in C#");
// Read PDF using IronPDF
ReadUsingIronPDF.Read();
public class ReadUsingIronPDF
{
public static void Read()
{
// Specify the path to the PDF document
string filename = "C:\\code\\articles\\ITextSharp\\ITextSharpIronPdfDemo\\Example.pdf";
// Create a PDF Reader instance to read the PDF
// IronPDF automatically handles various PDF versions and encryption
var pdfReader = PdfDocument.FromFile(filename);
// Extract all text from the PDF - maintains formatting and structure
var allText = pdfReader.ExtractAllText();
Console.WriteLine("------------------Text From PDF-----------------");
Console.WriteLine(allText);
Console.WriteLine("------------------Text From PDF-----------------");
// Extract all images from the PDF - supports various image formats
var allImages = pdfReader.ExtractAllImages();
Console.WriteLine("------------------Image Count From PDF-----------------");
Console.WriteLine($"Total Images = {allImages.Count()}");
// Save extracted images if needed (production example)
for (int i = 0; i < allImages.Count(); i++)
{
// allImages[i].SaveAs($"image_{i}.png");
}
Console.WriteLine("------------------Image Count From PDF-----------------");
// Iterate through each page to extract text from them
Console.WriteLine("------------------One Page Text From PDF-----------------");
var pageCount = pdfReader.PageCount;
for (int page = 0; page < pageCount; page++)
{
string text = pdfReader.ExtractTextFromPage(page);
Console.WriteLine($"Page {page + 1} content:");
Console.WriteLine(text);
}
// Additional IronPDF capabilities for production use
// Extract form data
var form = pdfReader.Form;
if (form != null)
{
foreach (var field in form.Fields)
{
Console.WriteLine($"Form Field: {field.Name} = {field.Value}");
}
}
// Access metadata
Console.WriteLine($"Author: {pdfReader.MetaData.Author}");
Console.WriteLine($"Title: {pdfReader.MetaData.Title}");
Console.WriteLine($"Created: {pdfReader.MetaData.CreationDate}");
}
}using IronPdf;
// Begin the comparison of IronPDF and iTextSharp for reading PDFs in C#
Console.WriteLine("Comparison of IronPDF And iTextSharp Read PDF Files in C#");
// Read PDF using IronPDF
ReadUsingIronPDF.Read();
public class ReadUsingIronPDF
{
public static void Read()
{
// Specify the path to the PDF document
string filename = "C:\\code\\articles\\ITextSharp\\ITextSharpIronPdfDemo\\Example.pdf";
// Create a PDF Reader instance to read the PDF
// IronPDF automatically handles various PDF versions and encryption
var pdfReader = PdfDocument.FromFile(filename);
// Extract all text from the PDF - maintains formatting and structure
var allText = pdfReader.ExtractAllText();
Console.WriteLine("------------------Text From PDF-----------------");
Console.WriteLine(allText);
Console.WriteLine("------------------Text From PDF-----------------");
// Extract all images from the PDF - supports various image formats
var allImages = pdfReader.ExtractAllImages();
Console.WriteLine("------------------Image Count From PDF-----------------");
Console.WriteLine($"Total Images = {allImages.Count()}");
// Save extracted images if needed (production example)
for (int i = 0; i < allImages.Count(); i++)
{
// allImages[i].SaveAs($"image_{i}.png");
}
Console.WriteLine("------------------Image Count From PDF-----------------");
// Iterate through each page to extract text from them
Console.WriteLine("------------------One Page Text From PDF-----------------");
var pageCount = pdfReader.PageCount;
for (int page = 0; page < pageCount; page++)
{
string text = pdfReader.ExtractTextFromPage(page);
Console.WriteLine($"Page {page + 1} content:");
Console.WriteLine(text);
}
// Additional IronPDF capabilities for production use
// Extract form data
var form = pdfReader.Form;
if (form != null)
{
foreach (var field in form.Fields)
{
Console.WriteLine($"Form Field: {field.Name} = {field.Value}");
}
}
// Access metadata
Console.WriteLine($"Author: {pdfReader.MetaData.Author}");
Console.WriteLine($"Title: {pdfReader.MetaData.Title}");
Console.WriteLine($"Created: {pdfReader.MetaData.CreationDate}");
}
}IronPDF 代碼的作用是什麼?
1.建立 Word 文件:首先,建立一個包含所需文字內容的 Word 文檔,並將其儲存為名為Example.pdf PDF 文件。
- PDFReader 實例:該程式碼使用 PDF 檔案路徑建立一個
PdfDocument物件來提取文字和圖像。 3.提取文字和圖像:ExtractAllText方法用於捕獲文件中的所有文本,而ExtractAllImages用於提取圖像。 4.擷取每頁文字:使用ExtractTextFromPage方法擷取每頁的文字。
IronPDF 能輸出什麼內容?
如何使用 iTextSharp 從 PDF 讀取文字?
現在,為了比較 iTextSharp 的文字擷取功能,請將以下程式碼新增至同一個 Program.cs 檔案。為簡單起見,我們沒有將類別拆分到不同的文件中。 請注意,iTextSharp 的基本操作需要更複雜的程式碼。
using IronPdf;
using iText.Kernel.Pdf;
using iText.Kernel.Pdf.Canvas.Parser.Listener;
using iText.Kernel.Pdf.Canvas.Parser;
using iText.Kernel.Pdf.Xobject;
// Begin the comparison of IronPDF and iTextSharp for reading PDFs in C#
Console.WriteLine("Comparison of IronPDF And iTextSharp Read PDF Files in C#");
// Call method to read PDF using iTextSharp library
ReadUsingITextSharp.Read();
public class ReadUsingITextSharp
{
public static void Read()
{
// Specify the path to the PDF document
string pdfFile = "C:\\code\\articles\\ITextSharp\\ITextSharpIronPdfDemo\\Example.pdf";
// Create a PDF Reader instance - more verbose than IronPDF
PdfReader pdfReader = new PdfReader(pdfFile);
// Initialize a new PDF Document - additional step required
iText.Kernel.Pdf.PdfDocument pdfDocument = new iText.Kernel.Pdf.PdfDocument(pdfReader);
// Extract text from all pages - more complex than IronPDF
Console.WriteLine("------------------Text From PDF (iTextSharp)-----------------");
for (int page = 1; page <= pdfDocument.GetNumberOfPages(); page++)
{
// Use a text extraction strategy to extract plain text from the PDF
LocationTextExtractionStrategy strategy = new LocationTextExtractionStrategy();
string pdfText = PdfTextExtractor.GetTextFromPage(pdfDocument.GetPage(page), strategy);
Console.WriteLine($"Page {page} content:");
Console.WriteLine(pdfText);
}
// Extract images - significantly more complex than IronPDF
Console.WriteLine("------------------Images From PDF (iTextSharp)-----------------");
int imageCount = 0;
for (int pageNum = 1; pageNum <= pdfDocument.GetNumberOfPages(); pageNum++)
{
var page = pdfDocument.GetPage(pageNum);
var resources = page.GetResources();
var xobjects = resources.GetResource(PdfName.XObject);
if (xobjects != null)
{
foreach (var key in xobjects.KeySet())
{
var xobject = xobjects.GetAsStream(key);
if (xobject != null)
{
var pdfObject = xobjects.Get(key);
if (pdfObject.IsStream())
{
var stream = (PdfStream)pdfObject;
var subtype = stream.GetAsName(PdfName.Subtype);
if (PdfName.Image.Equals(subtype))
{
imageCount++;
// Extracting the actual image requires additional complex code
}
}
}
}
}
}
Console.WriteLine($"Total Images Found: {imageCount}");
// Close the document - manual resource management required
pdfDocument.Close();
pdfReader.Close();
}
}using IronPdf;
using iText.Kernel.Pdf;
using iText.Kernel.Pdf.Canvas.Parser.Listener;
using iText.Kernel.Pdf.Canvas.Parser;
using iText.Kernel.Pdf.Xobject;
// Begin the comparison of IronPDF and iTextSharp for reading PDFs in C#
Console.WriteLine("Comparison of IronPDF And iTextSharp Read PDF Files in C#");
// Call method to read PDF using iTextSharp library
ReadUsingITextSharp.Read();
public class ReadUsingITextSharp
{
public static void Read()
{
// Specify the path to the PDF document
string pdfFile = "C:\\code\\articles\\ITextSharp\\ITextSharpIronPdfDemo\\Example.pdf";
// Create a PDF Reader instance - more verbose than IronPDF
PdfReader pdfReader = new PdfReader(pdfFile);
// Initialize a new PDF Document - additional step required
iText.Kernel.Pdf.PdfDocument pdfDocument = new iText.Kernel.Pdf.PdfDocument(pdfReader);
// Extract text from all pages - more complex than IronPDF
Console.WriteLine("------------------Text From PDF (iTextSharp)-----------------");
for (int page = 1; page <= pdfDocument.GetNumberOfPages(); page++)
{
// Use a text extraction strategy to extract plain text from the PDF
LocationTextExtractionStrategy strategy = new LocationTextExtractionStrategy();
string pdfText = PdfTextExtractor.GetTextFromPage(pdfDocument.GetPage(page), strategy);
Console.WriteLine($"Page {page} content:");
Console.WriteLine(pdfText);
}
// Extract images - significantly more complex than IronPDF
Console.WriteLine("------------------Images From PDF (iTextSharp)-----------------");
int imageCount = 0;
for (int pageNum = 1; pageNum <= pdfDocument.GetNumberOfPages(); pageNum++)
{
var page = pdfDocument.GetPage(pageNum);
var resources = page.GetResources();
var xobjects = resources.GetResource(PdfName.XObject);
if (xobjects != null)
{
foreach (var key in xobjects.KeySet())
{
var xobject = xobjects.GetAsStream(key);
if (xobject != null)
{
var pdfObject = xobjects.Get(key);
if (pdfObject.IsStream())
{
var stream = (PdfStream)pdfObject;
var subtype = stream.GetAsName(PdfName.Subtype);
if (PdfName.Image.Equals(subtype))
{
imageCount++;
// Extracting the actual image requires additional complex code
}
}
}
}
}
}
Console.WriteLine($"Total Images Found: {imageCount}");
// Close the document - manual resource management required
pdfDocument.Close();
pdfReader.Close();
}
}iTextSharp 會產生哪些輸出?
iTextSharp有哪些限制?
1.學習曲線:學習曲線較為陡峭,特別對初學者而言。 2.許可:AGPL 許可要求開源您的應用程式。 3.複雜的 API :簡單的操作需要多個物件和手動管理。
- HTML 支援有限:與 IronPDF 相比,HTML 渲染功能極少。 5.手動資源管理:您必須明確關閉資源。
1.學習曲線: iTextSharp 的學習曲線比較陡峭,尤其是初學者。 2.授權: iTextSharp 的授權模式可能不適合所有項目,尤其是那些預算有限的項目。
1.易用性:遵循 .NET 約定的簡單易用的 API。 2.文件渲染:像素級完美渲染,保持原始格式。 3.便於商業使用的許可:透明的許可,不受 AGPL 限制。 4.功能齊全:內建表單、簽名和註解支援。 5.效能更佳:針對多執行緒和大型文件處理進行了改進。
1.易用性: IronPDF 以其簡單易用的 API 而聞名,使開發人員能夠輕鬆上手。 2.文件渲染: IronPDF 提供精確的 PDF 文件渲染,確保擷取的文字與原文一致。
對於目前使用 iTextSharp 的團隊來說,遷移到 IronPDF 非常簡單。 請看以下程式碼範例:
// Migration Example: Text Extraction
// iTextSharp (old way)
PdfReader reader = new PdfReader(filename);
PdfDocument doc = new PdfDocument(reader);
string text = PdfTextExtractor.GetTextFromPage(doc.GetPage(1));
doc.Close();
// IronPDF (new way)
var pdf = PdfDocument.FromFile(filename);
string text = pdf.ExtractTextFromPage(0); // 0-based indexing
// Migration Example: Form Field Reading
// iTextSharp (complex)
PdfAcroForm form = PdfAcroForm.GetAcroForm(pdfDocument, false);
IDictionary<string, PdfFormField> fields = form.GetFormFields();
foreach (var field in fields)
{
string value = field.Value.GetValueAsString();
}
// IronPDF (simple)
var form = pdf.Form;
foreach (var field in form.Fields)
{
string value = field.Value;
}// Migration Example: Text Extraction
// iTextSharp (old way)
PdfReader reader = new PdfReader(filename);
PdfDocument doc = new PdfDocument(reader);
string text = PdfTextExtractor.GetTextFromPage(doc.GetPage(1));
doc.Close();
// IronPDF (new way)
var pdf = PdfDocument.FromFile(filename);
string text = pdf.ExtractTextFromPage(0); // 0-based indexing
// Migration Example: Form Field Reading
// iTextSharp (complex)
PdfAcroForm form = PdfAcroForm.GetAcroForm(pdfDocument, false);
IDictionary<string, PdfFormField> fields = form.GetFormFields();
foreach (var field in fields)
{
string value = field.Value.GetValueAsString();
}
// IronPDF (simple)
var form = pdf.Form;
foreach (var field in form.Fields)
{
string value = field.Value;
}文字擷取準確率比較如何?
IronPDF 擅長處理其他程式庫難以處理的複雜 PDF 檔案:
-掃描文件:處理經 OCR 處理的 PDF 文件時,文字流暢度更佳 -多欄版面:對報紙式版面的卓越處理能力 -加密檔案:自動處理受密碼保護的PDF文件
- Unicode 支援:完全支援 UTF-8 編碼和國際語言 -嵌入式字體:無論字體嵌入方式為何,都能準確擷取字體
如何配置 IronPDF 的許可?
請將您的 IronPDF 許可證金鑰插入appsettings.json檔案中。對於生產環境部署,建議使用環境變數進行安全的金鑰管理。
{
"IronPdf.LicenseKey": "your license key",
"IronPdf.LoggingMode": "Custom",
"IronPdf.ChromeGpuMode": "Disabled"
}如需試用許可證,請在我們的許可證頁面提供您的電子郵件地址。 IronPDF 提供靈活的許可選項,包括開發許可、測試許可和生產許可。 ## 我的專案應該選擇哪個函式庫?
選擇IronPDF還是 iTextSharp 取決於您的專案特定需求。 對於需要商業許可的企業應用程式而言,由於 iTextSharp 的 AGPL 許可限制較多,IronPDF 是首選。 如果您需要一個簡單易用的程式庫來進行常見的PDF 操作,IronPDF 憑藉其直覺的 API 可提供卓越的開發體驗。
做決定時請考慮以下因素:
-許可要求:AGPL 與商業友善許可
- API 複雜度:簡單直覺的 API 與複雜、底層 API -功能集:IronPDF 提供全方位的PDF 處理功能 -效能:IronPDF 提供更佳的效能提升 -支援:積極的開發和24/5 全天候技術支持
IronPDF 旨在將PDF 生成功能無縫整合到您的應用程式中,有效地處理格式化文件到 PDF 的轉換。 當您需要使用.NET將 Web 表單、本機 HTML 頁面和其他Web 內容轉換為 PDF 時,這種方法具有明顯的優勢。 您的應用程式可以輕鬆下載、透過電子郵件發送或將文件儲存在雲端。 無論您需要產生發票、報價單、報告、合約或其他專業文檔, IronPDF 的 PDF 產生功能都能滿足您的需求。 該程式庫還支援進階功能,例如PDF 壓縮、線性化以實現快速網頁瀏覽,以及符合 PDF/A 標準以實現長期存檔。 利用 IronPDF 直覺且高效的PDF 生成功能來改善您的應用程式。
常見問題解答
如何在C#中讀取PDF檔案?
您可以使用 IronPDF 庫讀取 PDF 文件,方法是建立一個PdfDocument實例,並使用ExtractAllText和ExtractAllImages等方法從 PDF 中提取內容。
在為 C# 選擇 PDF 庫時,我應該考慮哪些因素?
在 C# 中選擇用於 PDF 操作的庫(例如 IronPDF 和 iTextSharp)時,應考慮易用性、許可、學習曲線和特定專案要求等因素。
如何在我的 C# 專案中安裝 PDF 庫?
您可以透過 Visual Studio 中的 NuGet 套件管理器安裝 IronPDF,方法是搜尋“IronPDF: C# PDF Library”,然後按一下“安裝”按鈕。
使用 IronPDF 進行 PDF 處理有哪些優勢?
IronPDF 易於使用,API 簡單明了,文件渲染準確,是需要快速將 PDF 功能整合到應用程式中的開發人員的理想選擇。
IronPDF 和 iTextSharp 的使用複雜度有差嗎?
是的,IronPDF 以其簡潔性而聞名,而 iTextSharp 則提供了更大的靈活性和可擴展性,但這可能意味著更高的學習曲線。
IronPDF能否將HTML內容轉換為PDF?
是的,IronPDF 可以無縫地將 HTML 內容(例如網頁表單和頁面)轉換為 PDF 文檔,從而簡化下載和透過電子郵件發送 PDF 等任務。
使用iTextSharp處理PDF任務有哪些限制?
iTextSharp 的學習曲線可能比較陡峭,而且其授權模式可能不適合所有專案預算,特別是如果您正在尋找一個簡單的解決方案。
IronPDF 如何增強應用程式功能?
IronPDF 可以將 PDF 生成和處理功能整合到應用程式中,從而可以將 Web 內容轉換為 PDF,並處理發票和報告等專業文件。






