C#/VB.NET——从PDF文档中提取所有表格

有时,你可能需要从PDF文档中提取表数据。例如,PDF发票的表格中存储了一些有用的信息,你希望提取这些数据进行进一步分析。在下文中,我将介绍如何使用Spire.PDF for .NET从PDF文档中的所有表中提取数据。

安装SPIRE.PDF

首先,你需要从这个链接下载Spire.PDF的最新版本,然后手动将DLL文件添加到你的.NET应用程序中作为引用。或者,你可以通过NuGet直接安装。

现在,让我们来看看代码部分。

使用代码

Spire.PDF提供了PdfTableExtractor.ExtractTable()方法,可从特定页面提取表格。以下是从整个PDF文档中提取表格的详细步骤。

步骤1:创建一个PdfDocument对象并加载PDF文档。步骤2:遍历文档中的页面,并使用ExtractTable()方法从特定页面获取表格。

步骤3:遍历表格中的单元格,并通过PdfTable.GetText()方法获取单元格值。

步骤4:将提取的数据写入TXT文件。

C#

using Spire.Pdf;
using Spire.Pdf.Utilities;
using System.IO;
using System.Text;

namespace ExtractPdfTable
{
    class Program
    {
        static void Main(string[] args)
        {
            //创建一个PdfDocument对象
            PdfDocument doc = new PdfDocument();
            //加载PDF文档
            doc.LoadFromFile(@"C:\Users\Administrator\Desktop\Table.pdf");
            //创建一个StringBuilder对象
            StringBuilder builder = new StringBuilder();
            //创建一个PdfTableExtractor对象
            PdfTableExtractor extractor = new PdfTableExtractor(doc);
            //声明一个PdfTable数组
            PdfTable[] tableList = null;
            int tableNum = 1;
            //遍历PDF页面
            for (int pageIndex = 0; pageIndex < doc.Pages.Count; pageIndex++)
            {
                //从每个页面提取表格到PdfTable数组
                tableList = extractor.ExtractTable(pageIndex);
                //判断数组是否为空
                if (tableList != null && tableList.Length > 0)
                {
                    //遍历数组中的表格
                    foreach (PdfTable table in tableList)
                    {
                        builder.Append("Table " + tableNum);
                        builder.Append("\r\n");
                        //获取表格的行数和列数
                        int row = table.GetRowCount();
                        int column = table.GetColumnCount();
                        //遍历表格的行和列
                        for (int i = 0; i < row; i++)
                        {
                            for (int j = 0; j < column; j++)
                            {
                                //获取表格中每个单元格的文本
                                string text = table.GetText(i, j);
                                //保存文本到StringBuilder
                                builder.Append(text + " ");
                            }
                            builder.Append("\r\n");
                        }
                        builder.Append("\r\n");
                        tableNum += 1;
                    }
                }
            }
            //将文本写入.txt文档
            File.WriteAllText("Table.txt", builder.ToString());
        }
    }
}

VB.NET

Imports Spire.Pdf
Imports Spire.Pdf.Utilities
Imports System.IO
Imports System.Text

Namespace ExtractPdfTable
    Friend Class Program
        Private Shared Sub Main(ByVal args As String())
            '创建一个PdfDocument对象
            Dim doc As PdfDocument = New PdfDocument()
            '加载PDF文档
            doc.LoadFromFile("C:\Users\Administrator\Desktop\Table.pdf")
            '创建一个StringBuilder对象
            Dim builder As StringBuilder = New StringBuilder()
            '创建一个PdfTableExtractor对象
            Dim extractor As PdfTableExtractor = New PdfTableExtractor(doc)
            '声明一个PdfTable数组
            Dim tableList As PdfTable() = Nothing
            Dim tableNum = 1
            '遍历PDF页面
            For pageIndex As Integer = 0 To doc.Pages.Count - 1
                '从每个页面提取表格到PdfTable数组
                tableList = extractor.ExtractTable(pageIndex)
                '判断数组是否为空
                If tableList IsNot Nothing AndAlso tableList.Length > 0 Then
                    '遍历数组中的表格
                    For Each table As PdfTable In tableList
                        builder.Append("Table " & tableNum)
                        builder.Append(vbCrLf)
                        '获取表格的行数和列数
                        Dim row As Integer = table.GetRowCount()
                        Dim column As Integer = table.GetColumnCount()
                        '遍历表格的行和列
                        For i = 0 To row - 1

                            For j = 0 To column - 1
                                '获取表格中每个单元格的文本
                                Dim text As String = table.GetText(i, j)
                                '保存文本到StringBuilder
                                builder.Append(text & " ")
                            Next

                            builder.Append(vbCrLf)
                        Next

                        builder.Append(vbCrLf)
                        tableNum += 1
                    Next
                End If
            Next
            '将文本写入.txt文档
            Call File.WriteAllText("Table.txt", builder.ToString())
        End Sub
    End Class
End Namespace

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值