1. 产品
  2.   PDF格式
  3.   .NET
  4.   PdfPig
 
  

免费 C# .NET API,用于 PDF 文本提取和分析

领先的开源 .NET 库,可轻松从 PDF 文件中提取文本、图像、元数据和 PDF 结构信息。向 PDF 添加新页面、表格、文本和形状。

什么是 PdfPig 库?

PdfPig 是一个开源的 .NET 库,旨在用于在 C# 中读取、解析和提取 PDF 文件的内容。它是 Apache PDFBox 移植到 .NET 生态系统的版本,广泛用于 PDF 文本提取、文档分析和底层 PDF 处理。它支持 .NET Standard 和多个 .NET 版本,使其在现代开发环境中具有高度灵活性。该库在文档索引、搜索引擎、AI/ML 文档预处理、OCR 后处理、发票自动化、PDF 可访问性工具和数据提取系统方面非常有用。

PDF 文件无处不在——合同、报告、发票、电子书、银行对账单、研究论文和表格。由于 PDF 主要是一种呈现格式,而非语义文档格式,从 PDF 中提取结构化信息往往很困难。PdfPig 通过为开发者提供原始文本和单词、字符位置和边界框、字体和样式信息、图像和元数据以及文档布局细节,简化了这一问题。与许多主要关注生成 PDF 的库不同,PdfPig 专注于读取现有的 PDF 文档。这使其成为构建搜索引擎、OCR 流程、发票解析器、文档分析器、合规工具或内容提取系统的开发者的极佳选择。

Previous Next

PdfPig 入门指南

PdfPig 库以 NuGet 包的形式提供。因此强烈建议使用 NuGet 将 PdfPig 安装到您的项目中。请使用以下命令进行成功安装。

通过 NuGet 包管理器安装 PdfPig

// Package Manager
Install-Package PdfPig

// .NET CLI

dotnet add package PdfPig

您也可以手动安装;直接从 GitHub 仓库下载最新的发布文件。

通过 .NET 提取 PDF 文档中的文本

PdfPig 最常见的用例之一是从 PDF 文档中提取纯文本。软件开发人员可以打开 PDF 并逐页读取文本,或提取全部内容。这对于搜索索引、关键字扫描和内容分析特别有用。下面是一个简单示例,演示软件开发人员如何在 C# .NET 应用程序中从 PDF 文档中提取文本。首先它打开 PDF 文件并遍历所有页面,然后读取提取的文本内容。

如何通过 C# API 提取 PDF 文档中的文本?

using UglyToad.PdfPig;

using (var document = PdfDocument.Open("sample.pdf"))
{
    foreach (var page in document.GetPages())
    {
        string text = page.Text;
        Console.WriteLine(text);
    }
}

交互式表单与嵌入文件提取

开源的 PdfPig 库原生支持提取交互式 Acrobat 表单(AcroForms)以及读取 PDF 附件中隐藏的文件。它允许开发者全局检查表单定义,遍历各种交互式表单元素(如复选框、文本字段或按钮),并访问嵌入文档注释中的文件的底层原始字节数据,实现系统的无缝互操作性。

如何通过 C# .NET 库提取交互式表单数据?

using System;
using System.Collections.Generic;
using UglyToad.PdfPig;
using UglyToad.PdfPig.AcroForms;

class Program
{
    static void ExtractInteractiveContent(string pdfPath)
    {
        using (PdfDocument document = PdfDocument.Open(pdfPath))
        {
            // Extracting Interactive Form Data
            if (document.TryGetForm(out AcroForm form))
            {
                foreach (var field in form.Fields)
                {
                    Console.WriteLine($"Form Field Name: {field.Information.Name} | Type: {field.Type}");
                }
            }

            // Extracting Embedded Documents/Attachments
            if (document.Advanced.TryGetEmbeddedFiles(out IReadOnlyList embeddedFiles))
            {
                foreach (var file in embeddedFiles)
                {
                    Console.WriteLine($"Found Attachment: {file.Name} ({file.Bytes.Count} bytes)");
                    // File.WriteAllBytes(file.Name, file.Bytes.ToArray()); // Save attachment locally
                }
            }
        }
    }
}

通过 C# 实现无缝多文件 PDF 合并

超越内容提取,PdfPig 提供了简洁的文档管理工具。通过使用 PdfMerger 类,开发者可以将多个独立的 PDF 结构合并为单一的、统一的文件字节数组输出。这为在 .NET 流程中拼接程序化报告、发票或客户对账单提供了高效方式,而无需添加笨重的外部依赖。以下示例演示了用户如何在 .NET 应用程序中合并多个 PDF 文档。

如何在 C# .NET 应用程序中合并多个 PDF 文件?

using System.IO;
using UglyToad.PdfPig.Writer;

class Program
{
    static void MergeDocuments(string firstPdf, string secondPdf, string outputPdf)
    {
        // Consolidate files into a single continuous byte sequence
        byte[] mergedFileBytes = PdfMerger.Merge(firstPdf, secondPdf);
        
        // Output the combined file stream directly to disk
        File.WriteAllBytes(outputPdf, mergedFileBytes);
    }
}

读取 PDF 元数据、表单和注释

超越文本提取,开源的 PdfPig 库已包含可公开文档元数据(标题、作者、生成者)、交互式表单字段、超链接和书签的功能。这对于需要内容与上下文的文档分类系统、自动表单处理和内容索引来说极为宝贵。

 中国人