C#實現從PDF中提取表格的方法詳解
PDF是辦公中比較常見的一種文件格式,在工作中應用也越來越普遍。由於PDF文件集成度和安全可靠性都較高,所以在PDF中編輯內容是一件比較復雜且困難的事。但有時因工作需要,要求我們從中提取數據或表格該怎麼辦呢?別擔心,今天為大傢介紹一種通過C#/VB.NET代碼從PDF中提取表格內容的方法。下面是我整理的思路步驟及代碼供大傢參考。
程序環境
本次測試時,在程序中引入 Spire.PDF.dll 文件。
方法1:
將 Free Spire.PDF for .NET 下載到本地,解壓,找到 BIN 文件夾下的 Spire.PDF.dll。然後在 Visual Studio 中打開“解決方案資源管理器”,鼠標右鍵點擊“引用”,“添加引用”,將本地路徑 BIN 文件夾下的 dll 文件添加引用至程序。
方法2:
通過NuGet安裝。可通過以下 2 種方法安裝:
1. 可以在 Visual Studio 中打開“解決方案資源管理器”,鼠標右鍵點擊“引用”,“管理 NuGet 包”,然後搜索“Free Spire.PDF”,點擊“安裝”。等待程序安裝完成。
2. 將以下內容復制到 PM 控制臺安裝。
Install-Package FreeSpire.PDF -Version 8.6.0
從PDF中提取表格具體步驟
實例化PdfDocument類的對象並調用PdfDocument.LoadFromFile()方法加載文檔。
通過 PdfTableExtractor.ExtractTable(int pageIndex) 方法提取指定頁面中的表格。
通過 PdfTable.GetText(int rowIndex, int columnIndex) 方法將獲取具體行和列中的單元格文本內容。
將獲取的表格內容保存為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("編程語言1.pdf"); //創建StringBuilder類的對象 StringBuilder builder = new StringBuilder(); //實例化PdfTableExtractor類的對象 PdfTableExtractor extractor = new PdfTableExtractor(pdf); //聲明PdfTable類的表格數組 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) { //獲取表格中的行和列數 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"); } } } } //保存提取的表格內容為txt文檔 File.WriteAllText("提取表格.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("編程語言1.pdf") '創建StringBuilder類的對象 Dim builder As New StringBuilder() '實例化PdfTableExtractor類的對象 Dim extractor As New PdfTableExtractor(pdf) '聲明PdfTable類的表格數組 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 '獲取表格中的行和列數 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 '保存提取的表格內容為txt文檔 File.WriteAllText("提取表格.txt", builder.ToString()) End Sub End Class End Namespace
效果圖
註意:
測試代碼中的文件路徑為程序 Debug 路徑,僅供參考,文件路徑可自定義為其他路徑。
到此這篇關於C#實現從PDF中提取表格的方法詳解的文章就介紹到這瞭,更多相關C# PDF提取表格內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- C# 提取PDF中的表格詳情
- Java讀取PDF中的表格的方法示例
- 利用C#/VB.NET實現將PDF轉為Word
- C#和vb.net實現PDF 添加可視化和不可見數字簽名
- C#/VB.NET 將Word與Excel文檔轉化為Text