網(wǎng)站首頁 編程語言 正文
前言
有時,我們可能需要從 PDF 文檔中提取表格數(shù)據(jù),例如,當PDF發(fā)票的表格中存儲了一些有用的信息,需要提取數(shù)據(jù)以進行進一步分析時。在這篇文章中,我將介紹如何使用Spire.PDF for .NET?從 PDF 文檔中提取所有表格數(shù)據(jù)。
安裝
首先,我們需要將 Spire.PDF for .NET 包中包含的 DLL 文件添加為 .NET 項目中的引用。可以從此鏈接下載 DLL 文件,也可以通過?NuGet?安裝 DLL 文件。
PM> Install-Package Spire.PDF
從PDF文檔中提取表格
Spire.PDF提供了PdfTableExtractor.ExtractTable()方法,用于從特定頁面中提取表格。以下是從整個PDF文檔中提取表格的詳細步驟。
- 創(chuàng)建一個Document類的對象,并加載源 PDF 文件。
- 遍歷文檔中的頁面,并使用ExtractTable()方法從特定頁面獲取表格列表。
- 遍歷特定表格中的單元格,并通過PdfTable.GetText()方法獲取單元格值。
- 將所提取的數(shù)據(jù)寫入 TXT 文件。
[C#]
using Spire.Pdf;
using Spire.Pdf.Utilities;
using System.IO;
using System.Text;
namespace ExtractTable
{
class Program
{
static void Main(string[] args)
{
//實例化PdfDocument類的對象
PdfDocument pdf = new PdfDocument();
//加載PDF文檔
pdf.LoadFromFile("sample.pdf");
//創(chuàng)建StringBuilder類的對象
StringBuilder builder = new StringBuilder();
//實例化PdfTableExtractor類的對象
PdfTableExtractor extractor = new PdfTableExtractor(pdf);
//聲明一個PdfTable類的表格數(shù)組
PdfTable[] tableLists;
//遍歷PDF頁面
for (int pageIndex = 0; pageIndex < pdf.Pages.Count; pageIndex++)
{
//從頁面提取表格
tableLists = extractor.ExtractTable(pageIndex);
//判斷表格列表是否為空
if (tableLists != null && tableLists.Length > 0)
{
//遍歷表格
foreach (PdfTable table in tableLists)
{
//獲取表格中的行和列數(shù)
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");
}
}
}
}
//保存提取的表格內(nèi)容為.txt文檔
File.WriteAllText("ExtractedTable.txt", builder.ToString());
}
}
VB.NET
Imports Spire.Pdf
Imports Spire.Pdf.Utilities
Imports System.IO
Imports System.Text
Namespace ExtractTable
Class Program
Private Shared Sub Main(args As String())
'實例化PdfDocument類的對象
Dim pdf As New PdfDocument()
'加載PDF文檔
pdf.LoadFromFile("sample.pdf")
'創(chuàng)建StringBuilder類的對象
Dim builder As New StringBuilder()
'實例化PdfTableExtractor類的對象
Dim extractor As New PdfTableExtractor(pdf)
'聲明一個PdfTable類的表格數(shù)組
Dim tableLists As PdfTable()
'遍歷PDF頁面
For pageIndex As Integer = 0 To pdf.Pages.Count - 1
'從頁面提取表格
tableLists = extractor.ExtractTable(pageIndex)
'判斷表格列表是否為空
If tableLists IsNot Nothing AndAlso tableLists.Length > 0 Then
'遍歷表格
For Each table As PdfTable In tableLists
'獲取表格中的行和列數(shù)
Dim row As Integer = table.GetRowCount()
Dim column As Integer = table.GetColumnCount()
'遍歷表格行和列
For i As Integer = 0 To row - 1
For j As Integer = 0 To column - 1
'獲取行和列中的文本
Dim text As String = table.GetText(i, j)
'寫入文本到StringBuilder容器
builder.Append(text & Convert.ToString(" "))
Next
builder.Append(vbCr & vbLf)
Next
Next
End If
Next
'保存提取的表格內(nèi)容為.txt文檔
File.WriteAllText("ExtractedTable.txt", builder.ToString())
End Sub
End Class
End Namespace
原文鏈接:https://blog.51cto.com/u_15711850/5533826
相關(guān)推薦
- 2023-12-20 Nacos2.2.3版本運行startup.cmd出現(xiàn)閃退,無錯誤信息解決方法
- 2022-11-06 Golang常用包使用介紹_Golang
- 2023-05-29 Python常見異常的處理方式淺析_python
- 2022-09-23 windows10本地搭建FTP服務(wù)器圖文教程_FTP服務(wù)器
- 2022-05-31 .NET?MAUI項目中創(chuàng)建超鏈接_實用技巧
- 2022-04-28 python實現(xiàn)線性回歸的示例代碼_python
- 2022-06-21 Android?Studio實現(xiàn)簡易登錄界面制作_Android
- 2022-06-22 git用戶自定義變量查看修改及調(diào)用教程詳解_其它綜合
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學習環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支