跳至页脚内容
产品比较

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 文件?

  1. 在Visual Studio中创建一个新的C#项目,以比较使用IronPDF与iTextSharp读取PDF文件。
  2. 通过 NuGet 包管理器将 IronPDF 和 iTextSharp 库安装到您的项目中。
  3. 使用 IronPDF 直观的 API 读取 PDF 文件以提取文本。
  4. 使用 iTextSharp 更复杂的对象模型读取 PDF 文件。

本教程的先决条件是什么?

  1. Visual Studio: 确保您已安装Visual Studio或其他C#开发环境。 IronPDF 支持 Windows、Linux 和 macOS 环境。
  2. 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}");
    }
}
$vbLabelText   $csharpLabel

IronPDF 代码的作用是什么?

1.创建 Word 文档:首先,创建一个包含所需文本内容的 Word 文档,并将其另存为名为Example.pdf PDF 文档。

  1. 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();
    }
}
$vbLabelText   $csharpLabel

iTextSharp 会生成哪些输出?

iTextSharp有哪些局限性?

1.学习曲线:学习曲线较为陡峭,尤其对于初学者而言。 2.许可:AGPL 许可要求开源您的应用程序。 3.复杂的 API :简单的操作需要多个对象和手动管理。

  1. 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;
}
$vbLabelText   $csharpLabel

文本提取准确率对比如何?

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 与商业友好型许可

IronPDF 旨在将PDF 生成功能无缝集成到您的应用程序中,高效地处理格式化文档到 PDF 的转换。 当您需要使用.NET将 Web 表单本地 HTML 页面和其他Web 内容转换为 PDF 时,这种方法具有明显的优势。 您的应用程序可以方便地下载通过电子邮件发送或将文档存储在云端。 无论您需要生成发票报价单报告合同还是其他专业文档IronPDF 的 PDF 生成功能都能满足您的需求。 该库还支持高级功能,例如PDF 压缩线性化以实现快速网页浏览,以及符合 PDF/A 标准以实现长期存档。 利用 IronPDF 直观高效的PDF 生成功能改进您的应用程序。

请注意iText 和 iTextSharp 是其各自所有者的注册商标。 本网站并未与iText或iTextSharp存在关联、获得其认可或赞助。所有产品名称、标识和品牌均为其各自所有者的财产。 比较仅供参考,反映的是撰写时的公开信息。

常见问题解答

如何在 C# 中读取 PDF 文件?

您可以使用 IronPDF 库通过创建 PdfDocument 实例并使用 ExtractAllTextExtractAllImages 等方法从 PDF 中提取内容。

选择 C# 的 PDF 库时应该考虑什么?

选择库时,考虑诸如易用性、许可、学习曲线和特定项目需求等因素,例如用于 C# 中的 PDF 操作的 IronPDF 和 iTextSharp。

如何在我的 C# 项目中安装 PDF 库?

您可以通过在 Visual Studio 的 NuGet 包管理器中搜索 'IronPDF: C# PDF Library' 并点击 'Install' 按钮来安装 IronPDF。

使用IronPDF进行PDF操作的优势是什么?

IronPDF 提供了易用性、简洁的 API 和准确的文档呈现,使其成为需要快速集成 PDF 功能的开发人员的理想选择。

使用 IronPDF 和 iTextSharp 的复杂程度有差异吗?

是的,IronPDF 以其简单著称,而 iTextSharp 提供更多的灵活性和可扩展性,这可能需要更陡峭的学习曲线。

IronPDF 可以将 HTML 内容转换为 PDF 吗?

是的,IronPDF 可以无缝地将 HTML 内容(例如网页表单和页面)转换为 PDF 文档,便于下载和通过电子邮件发送 PDF。

使用 iTextSharp 进行 PDF 任务的一些限制是什么?

iTextSharp 可能会带来更陡峭的学习曲线,其许可模式可能不适合所有项目预算,尤其是当您需要一个简单的解决方案时。

IronPDF 如何增强应用程序功能?

IronPDF 可以将 PDF 生成和操作功能集成到应用程序中,允许将网页内容转换为 PDF 并处理发票和报告等专业文档。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。