C# 提取PDF中的表格详情

目录
  • 1、简单介绍
  • 2、环境配置
  • 3、代码示例

1、简单介绍

本文介绍在C#程序中(附VB.NET代码)提取PDF中的表格的方法,调用Spire.PDF for .NET提供的提取表格的 类 以及 方法 等来获取表格单元格中的文本内容;代码内容中涉及到的主要类及方法归纳如下表,供参考:


类型


描述


PdfDocument Class


Represents a pdf document model.


PdfDocument.LoadFromFile(string filename) Method


Loads a PDF document.


PdfTableExtractor Class


Represents the PDF table extractor.


PdfTable Class


Defines a PDF table.


PdfTableExtractor. ExtractTable(int pageIndex) Method


Extracts table from page.


PdfTable.GetText(int rowIndex,int columnIndex) Method


Gets Text in cell.


File.WriteAllText() Method


Saves extracted text in table to a .txt file.

2、环境配置

引用dll文件的2种方法:

方法1 :通过 NuGet 安装。

【步骤】

鼠标右键点击“引用”,“管理NuGet程序包”,

点击“浏览”,在搜索框中输入,点击“安装”,

或者使用PM控制台安装:

PM>Install-Package Spire.PDF -Version 7.10.4 

方法2 :手动添加引用。

【步骤】

鼠标右键点击“引用”,“添加引用”,

点击“浏览”,“浏览”,将本地路径下的dll文件(需提前 下载 到本地,并解压)添加到引用列表

点击OK,完成引用:

3、代码示例

C#

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

namespace ExtractTable
{
    class Program
    {
        static void Main(string[] args)
        {
            //加载PDF文档
            PdfDocument pdf = new PdfDocument();
            pdf.LoadFromFile("sample.pdf");
            StringBuilder builder = new StringBuilder();

            //抽取表格
            PdfTableExtractor extractor = new PdfTableExtractor(pdf);
            PdfTable[] tableLists = null;
            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);
                                builder.Append(text + " ");
                            }
                            builder.Append("\r\n");
                        }
                    }
                }
            }

            //保存提取的表格内容到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())
            '加载PDF文档
            Dim pdf As New PdfDocument()
            pdf.LoadFromFile("sample.pdf")
            Dim builder As New StringBuilder()

            '抽取表格
            Dim extractor As New PdfTableExtractor(pdf)
            Dim tableLists As PdfTable() = Nothing
            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)
                                builder.Append(text & Convert.ToString(" "))
                            Next
                            builder.Append(vbCr & vbLf)
                        Next
                    Next
                End If
            Next

            '保存提取的表格内容到txt文档
            File.WriteAllText("ExtractedTable.txt", builder.ToString())
        End Sub
    End Class
End Namespace

表格内容提取结果:

其他注意事项:

  • 代码中的PDF文件以及生成的.txt文件路径为 F:\VS2017Project\ExtractTable\bin\Debug\sample.pdf F:\VS2017Project\ ExtractTable\bin\Debug\ExtractedTable.txt。文件路径也可以自定义为其他路径。
  • 注意使用的dll文件版本。低于7.10.4的其他版本不支持提取表格。

到此这篇关于C# 提取PDF中的表格详情的文章就介绍到这了,更多相关C# 提取PDF中的表格内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • C# 在PDF文档中创建表格的实现方法

    表格能够直观的传达数据信息,使信息显得条理化,便于阅读同时也利于管理.那在PDF类型的文档中如何来添加表格并且对表格进行格式化操作呢?使用常规方法直接在PDF中添加表格行不通,那我们可以在借助第三方组件的情况下来实现.本篇文章中将介绍如何正确使用组件Free Spire.PDF for .NET添加表格到PDF.该组件提供了两个类PdfTable和PdfGrid用于创建表格,在进行代码编辑前,需先安装,添加Spire.PDF. dll到项目程序集中,同时添加到命名空间.下面是两种方法来添加表格的

  • C# 提取PDF中的表格详情

    目录 1.简单介绍 2.环境配置 3.代码示例 1.简单介绍 本文介绍在C#程序中(附VB.NET代码)提取PDF中的表格的方法,调用Spire.PDF for .NET提供的提取表格的 类 以及 方法 等来获取表格单元格中的文本内容:代码内容中涉及到的主要类及方法归纳如下表,供参考: 类型 描述 PdfDocument Class Represents a pdf document model. PdfDocument.LoadFromFile(string filename) Method

  • Java读取PDF中的表格的方法示例

    目录 一.概述 ​二.环境配置 1. 手动导入 2. Maven仓库下载导入 三.读取PDF中的表格 一.概述 本文以Java示例展示读取PDF中的表格的方法.这里导入Spire.PDF for Javah中的jar包,并使用其提供的相关及方法来实现获取表格中的文本内容.下表中整理了本次代码使用到的主要类.方法及解释,供参考: 类型 描述 PdfDocument Class Represents a pdf document model. PdfDocument. loadFromFile (s

  • java在pdf中生成表格的方法

    1.目标 在pdf中生成一个可变表头的表格,并向其中填充数据.通过泛型动态的生成表头,通过反射动态获取实体类(我这里是User)的get方法动态获得数据,从而达到动态生成表格. 每天生成一个文件夹存储生成的pdf文件(文件夹的命名是年月日时间戳),如:20151110 生成的文件可能在毫秒级别,故文件的命名规则是"到毫秒的时间戳-uuid",如:20151110100245690-ece540e5-7737-4ab7-b2d6-87bc23917c8c.pdf 通过读取properti

  • python 三种方法提取pdf中的图片

    有时我们需要将一份或者多份PDF文件中的图片提取出来,如果采取在线的网站实现的话又担心图片泄漏,手动操作又觉得麻烦,其实用Python也可以轻松搞定! 今天就跟大家系统分享几种Python提取 PDF 图片的方法.其实没有非常完美的方法,每种方法提取效率都不是百分之百,因此可以考虑用多种方法进行互补,主要将涉及: 基于 fitz 库和正则搜索提取图片 基于 pdf2image 库的两种方法提取图片 基于 fitz 库和正则搜索 fitz 是 pymupdf 的子模块,需要先用命令行安装 pymu

  • .NET提取 Thread 中返回值详情

    目录 一..NET 2.0+ 二..NET 4.0 + 三..NET 4.5 + 以下文章来源于公众号DotNetCore实战  Igor Bendrup: 关于如何获取 Thread 中的返回值,不同的版本有不同的解决方案. 一..NET 2.0+ 你可以直接使用 Thread 对象,然后你可以使用闭包(声明变量并在 lambda 中捕获它),参考如下代码: object result = null; Thread thread = new System.Threading.Thread(()

  • Python提取PDF中的图片的实现示例

    目录 1.导入相关库 2.具体实现 2.1.使用正则表达式查找PDF中的图片 2.2.打印PDF的相关信息 2.3.遍历PDF中的对象,遇到是图像才进行下一步,不然就continue 2.4.将图像存为png格式 2.5.输入pdf路径,即可运行 3.结果预览 3.1.程序结果 3.2.原本的pdf 3.3.提取出来的图片 1.导入相关库 import fitz import time import re import os 2.具体实现 为了方便和其他模块组合,我直接写了个函数完成这个功能,实

  • Java在PDF中添加表格过程详解

    前言 本文将介绍通过Java编程在PDF文档中添加表格的方法.添加表格时,可设置表格边框.单元格对齐方式.单元格背景色.单元格合并.插入图片.设置行高.列宽.字体.字号等. 使用工具:Free Spire.PDF for Java (免费版) Jar文件获取及导入: 方法1:通过官网下载jar文件包.下载后,解压文件,将lib文件夹下的Spire.Pdf.jar文件导入Java程序. 方法2:通过maven仓库安装导入. Java 代码示例 Java代码 import com.spire.pdf

  • python实现PDF中表格转化为Excel的方法

    这几天想统计一下<中国人文社会科学期刊 AMI 综合评价报告(2018 年):A 刊评价报告>中的期刊,但是只找到了该报告的PDF版,对于表格的编辑不太方便,于是想到用Python将表格转成Excel格式. 看过别人写的博客,发现Python解析PDF有以下四种方式: -pdfminer:擅长文字的解析,把表格解析成普通的文本,没有格式: -pdf2html:把pdf解析成html,但html的标签并没有规律,解析一个表格还可以,多个表格的话不太好提取: -tabula:对于简单的表格,即单元

  • 用Python提取PDF表格的方法

    大家好,从PDF中提取信息是办公场景中经常需要用到的操作,也是经常又读者在后台问的一个操作. 内容少的话我们可以手动复制粘贴,但如果需要批量提取就可以考虑使用Python,之前我也转载过相关文章,提到主要就是使用pdfplumber库,今天我们再次举例讲解. 通常PDF里的表格分为图片型和文本型.文本型又分简单型和复杂型.本文就针对这三部分举例讲解. 提取简单型表格 提取较为复杂型表格 提取图片型表格 用到的模块主要有 pdfplumber pandas Tesseract PIL 文中出现的P

随机推荐