C#实现从PDF中提取表格的方法详解

目录
  • 程序环境
  • 从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提取表格内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • C# 将Excel转为PDF时自定义表格纸张大小的代码思路

    通过后端程序将Excel表格转为PDF格式时,直接转换后的PDF效果可能出现表格页面过小或者过大,导致页面内容分布不均.要改善转换后的文档效果,只需在转换前自定义表格纸张大小,即可调整转换后的PDF页面表格布局效果.下面是具体方法和步骤. 引入dll 在Visual Studio中,打开"解决方案资源管理器",鼠标右键点击"引用", 1.通过NuGet安装dll(2种方法) 1.1 可以在Visual Studio中打开"解决方案资源管理器",鼠

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

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

  • C# 实现绘制PDF嵌套表格案例详解

    嵌套表格,即在一张表格中的特定单元格中再插入一个或者多个表格,使用嵌套表格的优点在于能够让内容的布局更加合理,同时也方便程序套用.下面的示例中,将介绍如何通过C#编程来演示如何插入嵌套表格到PDF文档. 要点概括: 1. 插入嵌套表格 2. 插入文字到嵌套表格 3. 插入图片到嵌套表格 使用工具 Spire.PDF 4.9.7 注: 1.这里使用的版本为4.9.7,经测试,对于代码中涉及的PdfGridCellContentList类和PdfGridCellContent类仅在使用该版本或者以上

  • 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

  • C#/VB.NET 实现在PDF表格中添加条形码

    目录 类库引入及代码思路 代码示例 C# vb.net 条码的应用已深入生活和工作的方方面面.在处理条码时,常需要和各种文档格式相结合.当需要在文档中插入.编辑或者删除条码时,可借助于一些专业的类库工具来实现.本文,以操作PDF文件为例,介绍如何在编辑表格时,向单元格中插入条形码. 类库引入及代码思路 本次功能测试中,使用 Free Spire.PDF for .NET. 实现功能的大致思路:生成条形码,将条形码保存为图片,然后在PDF中的表格单元格中插入条码图片. Spire.PDF for

  • C#实现从PDF中提取表格的方法详解

    目录 程序环境 从PDF中提取表格具体步骤 完整代码 PDF是办公中比较常见的一种文件格式,在工作中应用也越来越普遍.由于PDF文件集成度和安全可靠性都较高,所以在PDF中编辑内容是一件比较复杂且困难的事.但有时因工作需要,要求我们从中提取数据或表格该怎么办呢?别担心,今天为大家介绍一种通过C#/VB.NET代码从PDF中提取表格内容的方法.下面是我整理的思路步骤及代码供大家参考. 程序环境 本次测试时,在程序中引入 Spire.PDF.dll 文件. 方法1: 将 ​ ​Free Spire.

  • 使用c#在word文档中创建表格的方法详解

    复制代码 代码如下: public string CreateWordFile()        {            string message = "";            try            {                Object Nothing = System.Reflection.Missing.Value;                string name = "xiehuan.doc";               

  • 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表格的方法详解

    目录 程序环境 代码示例 条码的应用已深入生活和工作的方方面面.在处理条码时,常需要和各种文档格式相结合.当需要在文档中插入.编辑或者删除条码时,可借助于一些专业的类库工具来实现.本文,以操作PDF文件为例,介绍如何在编辑表格时,向单元格中添加条形码. 程序环境 本次功能测试中,使用 Free Spire.PDF for Java. 实现功能的大致思路:生成条形码,将条形码保存为图片,然后在PDF中的表格单元格中插入条码图片. Spire.PDF for Java 中的Spire.Pdf.Bar

  • python正则表达式从字符串中提取数字的思路详解

    python从字符串中提取数字 使用正则表达式,用法如下: ## 总结 ## ^ 匹配字符串的开始. ## $ 匹配字符串的结尾. ## \b 匹配一个单词的边界. ## \d 匹配任意数字. ## \D 匹配任意非数字字符. ## x? 匹配一个可选的 x 字符 (换言之,它匹配 1 次或者 0 次 x 字符). ## x* 匹配0次或者多次 x 字符. ## x+ 匹配1次或者多次 x 字符. ## x{n,m} 匹配 x 字符,至少 n 次,至多 m 次. ## (a|b|c) 要么匹配

  • C#设置或验证PDF文本域格式的方法详解

    目录 概述 引入dll 代码(C#/VB.NET) 概述 PDF中的文本域可以通过设置不同格式,用于显示数字.货币.日期.时间.邮政编码.电话号码和社保号等等.Adobe Acrobat提供了许多固定的JavaScripts用来设置和验证文本域的格式,如:AFNumber_Format(2, 0, 0, 0, "$", true)和AFNumber_Keystroke(2, 0, 0, 0, "$", true).Format后缀的script是用来设置文本域显示的

  • vue中使用vue-pdf的方法详解

    需求:简单说~~有两个pdf文件需在h5上展示,通过点击按钮切换不同文件的显示 注: 1.vue-pdf默认展示首页,我这里的需求是通过滑动展示所有页面,这里使用的v-for遍历.有多少页就加载了多少个pdf组件. 2.pdf文件存在跨域问题,这个需要后端同学支持. 3.demo上的pdf文件只有一页,测试多页展示,自己改用多页pdf文件即可 <template> <div class="pdf_wrap"> <div class="pdf_li

  • Vue3中使用Supabase Auth方法详解

    目录 引言 安装Supabase 设置Supabase 创建一个AuthUser组合 创建页面 注册.vue EmailConfirmation.vue 登录.vu ForgotPassword.vue Me.vue login() loginWithSocialProvider() logout() isLoggedIn() register() update() sendPasswordResetEmail() 观察Auth状态的变化 测试东西 注销 家庭作业 总结 引言 Supabase是

  • 利用Vue3实现可复制表格的方法详解

    目录 前言 最基础的表格封装 实现复制功能 处理表格中的不可复制元素 测试 前言 表格是前端非常常用的一个控件,但是每次都使用v-for指令手动绘制tr/th/td这些元素是非常麻烦的.同时,基础的 table 样式通常也是不满足需求的,因此一个好的表格封装就显得比较重要了. 最基础的表格封装 最基础基础的表格封装所要做的事情就是让用户只关注行和列的数据,而不需要关注 DOM 结构是怎样的,我们可以参考 AntDesign,columns dataSource 这两个属性是必不可少的,代码如下:

  • python编程之requests在网络请求中添加cookies参数方法详解

    哎,好久没有学习爬虫了,现在想要重新拾起来.发现之前学习爬虫有些粗糙,竟然连requests中添加cookies都没有掌握,惭愧.废话不宜多,直接上内容. 我们平时使用requests获取网络内容很简单,几行代码搞定了,例如: import requests res=requests.get("https://cloud.flyme.cn/browser/index.jsp") print res.content 你没有看错,真的只有三行代码.但是简单归简单,问题还是不少的. 首先,这

随机推荐