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 System.IO;

using System.Text;

using Spire.Pdf;

using Spire.Pdf.Utilities; 

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 System.IO

Imports System.Text

Imports Spire.Pdf

Imports Spire.Pdf.Utilities

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


你可能感兴趣的:(C#/VB.NET——从PDF文档中提取所有表格)