IRONSOFTWAREHOME
使用IRONPDF

C# PDF转换(开发者教程)

Curtis Chau
Curtis Chau
Updated: 2026年4月23日

在许多行业中,PDF文件是分享结构化文档(如报告、发票和数据表)的首选格式。 然而,从PDF中提取数据,特别是当涉及到表格时,由于PDF格式的特性,可能会有挑战。 与结构化数据格式不同,PDF主要是为展示而设计的,而不是数据提取。

然而,借助IronPDF,一个强大的C# PDF .NET库,您可以轻松地直接从PDF中提取表格等结构化数据,并在您的.NET应用程序中处理它们。 本文将一步步引导您如何使用IronPDF从PDF文件中提取表格数据。

您何时需要从PDF文档中提取表格?

无论是在进行库存管理、数据录入、记录降雨量等数据时,表格都是结构化和显示数据的便捷方式。因此,也可能有许多提取表格和表格数据的原因。 一些最常见的使用案例包括:

  • 自动化数据录入: 从PDF报告或发票中的表格中提取数据可以自动化填充数据库或电子表格等流程。
  • 数据分析: 企业通常会收到PDF格式的结构化报告。 提取表格可让您以编程方式分析这些数据。
  • 文档转换: 将表格数据提取为更易访问的格式,如Excel或CSV,能够更容易地操作、存储和分享。
  • 审计和合规: 对于法律或财务记录,以编程方式从PDF文档中提取表格数据可以帮助自动化审计并确保合规性。

PDF表格的工作原理是什么?

PDF文件格式不提供任何原生的能力来以表格等结构化格式存储数据。 在今天的例子中,我们使用HTML创建了表格,然后转换为PDF格式。 表格被渲染为文本和线条,因此提取表格数据通常需要一些解析和解释内容,除非您使用OCR软件,例如IronOCR。

How to Extract Table Data from a PDF File in C#

在我们探讨IronPDF如何完成这一任务之前,让我们先探讨一个在线PDF提取工具的操作。 要使用在线PDF工具从PDF文档中提取表格,请按照以下步骤操作:

  1. 导航到免费的在线PDF提取工具
  2. 上传包含表格的PDF
  3. 查看和下载结果

步骤一:导航至免费在线PDF提取工具

今天,我们将使用Docsumo作为我们的在线PDF工具示例。 Docsumo 是一个在线PDF文档AI,提供免费的PDF表格提取工具。

如何从PDF文件中提取表格数据在C#中:图1

步骤二:上传包含表格的PDF

现在,点击"上传文件"按钮,上传您的PDF文件以进行提取。 该工具将立即开始处理您的PDF。

如何从PDF文件中提取表格数据在C#中:图2

步骤三:查看和下载结果

一旦Docsumo处理完成PDF,它将显示提取的表格。 然后,您可以对表格结构进行调整,例如添加和删除行。 在这里,您可以将表格下载为另一个PDF、XLS、JSON或文本。

如何从PDF文件中提取表格数据在C#中:图3

使用IronPDF提取表格数据

IronPDF 允许你从 PDF 中提取数据、文本和图形,然后可以用其编程地重建表格。 要做到这一点,您首先需要从PDF中的表格中提取文本内容,然后使用该文本将表格解析为行和列。 在我们开始提取表格之前,让我们看看IronPDF的ExtractAllText()方法如何通过提取表格中的数据来工作:

using IronPDF;

class Program
{
    static void Main(string[] args)
    {
        // Load the PDF document
        PdfDocument pdf = PdfDocument.FromFile("example.pdf");
        
        // Extract all text from the PDF
        string text = pdf.ExtractAllText();
        
        // Output the extracted text to the console
        Console.WriteLine(text);
    }
}

如何从PDF文件中提取表格数据在C#中:图4

在这个例子中,我们使用PdfDocument类加载了PDF文档,然后使用了**ExtractAllText()**方法提取文档中的所有文本,最后在控制台上显示文本。

使用IronPDF从文本中提取表格数据

从PDF中提取文本后,表格将作为一系列行和列以纯文本形式出现。 您可以根据换行符(\n)拆分这些文本,然后根据一致的空格或分隔符(如逗号或制表符)进一步将行拆分为列。 以下是一个解析表格内容的基本示例:

using IronPDF;
using System;
using System.Linq;

class Program
{
    static void Main(string[] args)
    {
        // Load the PDF document
        PdfDocument pdf = PdfDocument.FromFile("table.pdf");
        
        // Extract all text from the PDF
        string text = pdf.ExtractAllText();
        
        // Split the text into lines (rows)
        string[] lines = text.Split('\n');
        
        foreach (string line in lines)
        {
            // Split the line into columns using the tab character
            string[] columns = line.Split('\t').Where(col => !string.IsNullOrWhiteSpace(col)).ToArray();
            Console.WriteLine("Row:");
            
            foreach (string column in columns)
            {
                Console.WriteLine("  " + column); // Output each column in the row
            }
        }
    }
}

如何从PDF文件中提取表格数据在C#中:图5

在这个例子中,我们按照之前的步骤一样加载我们的PDF文档并提取了文本。 然后,使用**text.Split('\n')根据换行符将提取的文本拆分为行,并将结果存储在lines数组中。 然后使用foreach循环遍历数组中的行,其中line.Split('\t')用于采用制表符'\t'**为分隔符进一步将行拆分为列。 列数组的下一部分,**Where(col => !string.IsNullOrWhiteSpace(col)).ToArray()**过滤掉由于额外空格可能出现的空列,然后将列添加到列数组中。

最后,我们在控制台输出窗口中写入具有基本行和列结构的文本。

将提取的表格数据导出为CSV

现在我们已经介绍了如何从PDF文件中提取表格,让我们看看可以用提取的数据做什么。 将提取的表格导出为CSV文件是处理表格数据和自动化任务(如数据录入)的一种有用方式。 在这个例子中,我们用模拟数据填充了一个表格,这种情况下是一周中的每日日降雨量,从PDF中提取了表格,然后将其导出为CSV文件。

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using IronPDF;

class Program
{
    static void Main(string[] args)
    {
        string pdfPath = "table.pdf";
        string csvPath = "output.csv";
        
        // Extract and parse table data
        var tableData = ExtractTableDataFromPdf(pdfPath);
        
        // Write the extracted data to a CSV file
        WriteDataToCsv(tableData, csvPath);
        Console.WriteLine($"Data extracted and saved to {csvPath}");
    }

    static List<string[]> ExtractTableDataFromPdf(string pdfPath)
    {
        var pdf = PdfDocument.FromFile(pdfPath);
        
        // Extract text from the first page
        var text = pdf.ExtractTextFromPage(0); 
        var rows = new List<string[]>();
        
        // Split text into lines (rows)
        var lines = text.Split('\n');
        
        // Variable to hold column values temporarily
        var tempColumns = new List<string>();
        
        foreach (var line in lines)
        {
            var trimmedLine = line.Trim();
            
            // Check for empty lines or lines that don't contain table data
            if (string.IsNullOrEmpty(trimmedLine) || trimmedLine.Contains("Header"))
            {
                continue;
            }
            
            // Split line into columns. Adjust this based on how columns are separated.
            var columns = trimmedLine.Split(new[] { ' ', '\t' }, StringSplitOptions.RemoveEmptyEntries);
            
            if (columns.Length > 0)
            {
                // Add columns to temporary list
                tempColumns.AddRange(columns);
                rows.Add(tempColumns.ToArray());
                tempColumns.Clear(); // Clear temporary list after adding to rows
            }
        }
        
        return rows;
    }

    static void WriteDataToCsv(List<string[]> data, string csvPath)
    {
        using (var writer = new StreamWriter(csvPath))
        {
            foreach (var row in data)
            {
                // Join columns with commas and quote each field to handle commas within data
                var csvRow = string.Join(",", row.Select(field => $"\"{field.Replace("\"", "\"\"")}\""));
                writer.WriteLine(csvRow);
            }
        }
    }
}

PDF文件示例

如何从PDF文件中提取表格数据在C#中:图6

输出CSV文件

如何从PDF文件中提取表格数据在C#中:图7

正如您所见,我们成功将PDF表格导出为CSV。首先,我们加载了包含表格的PDF并创建了新的CSV文件路径。 在此之后,我们使用var tableData = ExtractTableDataFromPdf(pdfPath)行提取了表格,调用了ExtractTableDataFromPdf()方法。 此方法提取了表格所在的PDF页面上的所有文本,并将其存储在text变量中。

然后,我们将文本拆分为行和列。 最后,在返回拆分结果后,我们调用方法static void WriteDataToCsv(),该方法接收提取的分割文本并使用StreamWriter将其写入我们的CSV文件。

提示和最佳实践

在处理PDF表格时,遵循一些基本的最佳实践可以帮助确保您将遇到错误或问题的机会降到最低。

  • 预处理PDF: 如果可能,预处理您的PDF以确保一致的格式,从而简化提取过程。
  • 验证数据: 始终验证提取的数据以确保准确性和完整性。
  • 处理错误: 实施错误处理以管理文本提取或解析失败的情况,例如将您的代码包装在try-catch块中。
  • 优化性能: 对于大型PDF,考虑优化文本提取和解析以处理性能问题。

IronPDF 许可

IronPDF提供了不同的许可选项,允许您在决定是否许可之前尝试IronPDF提供的所有强大功能。

结论

使用IronPDF从PDF中提取表格是一种自动化数据提取、促进分析和将文档转换为更易访问格式的强大方式。 无论是处理简单的表格还是复杂的不规则格式,IronPDF都提供了提取和处理表格数据所需的工具。

通过IronPDF,您可以简化诸如自动数据录入、文档转换和数据分析等工作流程。 IronPDF提供的灵活性和高级功能使其在处理各种基于PDF的任务中成为一件有价值的工具。

Curtis Chau
技术作家

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

...
阅读更多

相关文章

Key in blue circle

立即获取免费的 30 天试用版密钥。

Your trial license will be sent to your email address

无任何限制。100% 解锁。无需信用卡。

OR
bullet_checked无需信用卡或创建账户无任何限制。100% 解锁。无需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried Iron Suite
预约您的免费现场演示
Booking Badge

深受全球数百万工程师信赖

Iron Software 的客户徽标
获取您的无义务咨询
填写下面的表格或通过sales@ironsoftware.com
您的资料将始终保密。
深受全球数百万工程师信赖
Iron Software 的客户徽标
立即获取您的免费30 天试用密钥。
无需信用卡或创建账户
C# 用于 PDF 的 NuGet 库
通过 NuGet 安装

版本: 2026.9

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. 在解决方案资源管理器中,右键点击引用,管理 NuGet 包
  2. 选择浏览并搜索 “IronPDF”
  3. 选择包并安装
C# PDF DLL
下载 DLL

版本: 2026.9

或在此处下载 Windows 安装程序。

  1. 下载并解压 IronPDF 到您的解决方案目录中的 ~/Libs 之类的位置
  2. 在 Visual Studio 解决方案资源管理器中,右键点击引用。选择浏览,“IronPDF.dll”

$999 起