C# 提取 PDF 文档中的文本

2023-11-06

安装 IText7

首先在 Nuget 包管理器中,安装 itext7itext7.font-asian

如果不安装 itext7.font-asian PDF 文件中有非Unicode编码的字符,将会抛出运行时异常:

iText.IO.Exceptions.IOException:找不到 CMap iText.IO.Font.Cmap.UniGB-UTF16-H

安装好了这两个组件之后,使用以下代码,从PDF文件中提取出所有的文本。

示例代码

功能封装:

public class IText7Helper
{
	public static string ExtractText(string pdfFilePath)
	{
		//创建一个PdfReader对象,用来读取pdf文件
		PdfReader pdfReader = new PdfReader(pdfFilePath);
		//创建一个PdfDocument对象,用于操作pdf文档
		PdfDocument pdfDocument = new PdfDocument(pdfReader);
		//创建一个StringBuilder对象,来存储提取的文本
		StringBuilder textBuilder = new StringBuilder();
		//获取pdf文档的总页数
		int pageCount = pdfDocument.GetNumberOfPages();
		//遍历每一页
		for (int i = 1; i <= pageCount; i++)
		{
			//获取当前页的PdfPage对象
			PdfPage pdfPage = pdfDocument.GetPage(i);
			//创建一个ITextExtractionStrategy对象,用于指定提取文本的策略
			ITextExtractionStrategy strategy = new LocationTextExtractionStrategy();
			//使用PdfTextExtractor类的GetTextFromPage方法,根据指定的策略提取当前页的文本
			string pageText = PdfTextExtractor.GetTextFromPage(pdfPage, strategy);
			//将提取的文本追加到StringBuilder对象中
			textBuilder.Append(pageText);
		}
		//关闭PdfDocument对象
		pdfDocument.Close();
		//返回StringBuilder对象中的字符串
		return textBuilder.ToString();
	}
}

调用方法:

string text = IText7Helper.ExtractText("test.pdf");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 提取 PDF 文档中的文本 的相关文章

随机推荐

  • Oracle<-->MySQL

    to char 123 456 FM9 990 09 format 123 456 2 default en US 9 999 999 to char 123 cast 123 as unsigned int unsigned signed
  • 软件测试工具比较

    软件测试工具比较 作者 乔元 来源 无忧软件测试网 http www csai cn 2005年11月18日 随着软件测试的地位逐步提高 测试的重要性逐步显现 测试工具的应用已经成为了普遍的趋势 目前用于测试的工具已经比较多了 这些测试工具
  • 在Ubuntu16.04上安装QQ

    在Ubuntu16 04上安装QQ 霾大 1 个月前 最近装了双系统win10 ubuntu16 04 想在ubuntu上装个QQ 然后发现 在网上找了不少教程 都是装的wine qq 装了才发现显示版本过低 登不上去啊 后来发现用cros
  • MySQL数据库(二)SQL语言和数据类型

    成功不易 加倍努力 1 SQL语言 1 1 关系型数据库的常见组件 1 2 SQL语言的兴起与语法标准 2 管理数据库 2 1 创建数据库 2 2 修改数据库 2 3 删除数据库 2 4 查看数据库列表 3 数据类型 3 1 整数型 3 2
  • linux定时调用存储过程,linux下crontab定时执行shell脚本调用oracle 存储过程

    问题 脚本内调用存储过程 脚本直接执行没问题 使用crontab 执行脚本存储过程未执行 原因 缺少oracle环境变量 解决 在shell脚本里添加oracle的环境变量 bin sh PATH PATH HOME bin 环境变量 ex
  • 获取层级(结构树)

    public ResponseDTO
  • 使用typescript去简单的写一个时间显示的canvas小球

    在学习完了ts后 一直想找一个项目练手 可网上开源的项目 写的ts项目 还是有点复杂 不太适合刚刚学完ts想练手的同学 于是就打算自己写一个 ts小项目 大概需求就是 1 可以根据当前时间 用canvas绘制一个时间 2 可以每隔一秒 收集
  • ld 链接程序出错定位

    工具链相关问题 一般可 verbose 下 看看具体什么地方出问题 设置 LDFLAGS Wl verbose 例如 链接一堆 o文件 只有以下错误信息 ld final link failed Bad value 就可以加入 Wl ver
  • python3 中的import 和from import 使用区别(包和模块)

    python3 中的import 和from import 使用区别 包和模块 1 知识点 1 什么是包 什么是模块 2 import from import 如何使用 3 import 和 from import 使用区别 2 实现 以如
  • 【Flink】第一节 源码编译

    我认识以及改造flink的第一步从下载编译源码开始 0 环境 idea java 1 8 scala 2 12 flink 1 16 maven setting 核心 nodejs 这个去官网下载安装一下就好 npm v 显示成功就好 文末
  • 百度编程大赛试题----类似九格宫(C++算法实现)

    转载请标明是引用于 http blog csdn net chenyujing1234 欢迎大家提出意见 一起讨论 在网上有讲到 lt lt 度编程大赛试题 类似九格宫的C 试题 gt gt 的文章 http hi baidu com tw
  • 基于Vue实现的用户可注册登录的Todo-List清单

    用到技术 Vue 脚手架 路由 element UI 文件目录 src components Enter vue MyBanner vue MyFooter vue MyHeader vue MyItem vue MyList vue pa
  • 定义一个表示学生信息的类Student...

    定义一个表示学生信息的类Student 要求如下 1 类Student的成员变量 nO 表示学号 name表示姓名 sex表示性别 age表示年龄 java 表示Java课程成绩 2 类Student带参数的构造方法 在构造方法中通过参数完
  • 笔记1 - Web API 的概念和http协议

    接口定义 接口是个比较泛义上的概念 主要表示系统对外交互的部分 比如电源插座是电器和电能之间的接口 图形界面是应用软件和用户的接口 医院挂号大厅是医生和病人之间的接口 webAPI 我们要学习的接口概念缩小到web系统提供的对外消息交互接口
  • C# 如何在一个项目中引用另外一个项目

    C 如何在一个项目中引用另外一个项目 直接使用 using namespace 会发现引用不了 需要先添加引用 勾上需要引用的项目 我们再用 using namespace 就会发现可以了
  • html制作自动切换的广告页,js实现每个IP每天只弹出一次广告页,js实现html自动弹出对话框...

    js实现每个IP每天只弹出一次广告页 定义Cookie function setCookie name value expire window document cookie name escape value expire null ex
  • Excalidraw 简介及 Docker Compose 部署指南

    家人们好 我们在工作生活中经常需要画些图 我们往期了已经出过draw io私有化部署的文章了 今天我要向大家介绍一款名为 Excalidraw 的绘图工具 这款工具了我个人非常喜欢使用 是因为它可以修改成类似于手写体的字体 并且可以直接绘画
  • 深度学习&图像处理(深度学习的医学图像分割3.1)

    基于深度学习的医学图像分割模型研究 曹祺炜 1 基于改进的3D FCN CRF以及MS CapsNetGAN实现脑肿瘤图像分割 图像语义分割 简单而言就是给定一张图片 对图片上的每一个像素点分类 不同颜色代表不同类别 图像分割的主要步骤 图
  • mysql安装配置——超详细图文教程

    相关资源包进群自取 953882093 1 首先单击MySQL5 5 21的安装文件 出现该数据库的安装向导界面 单击 next 继续安装 如图所示 2 在打开的窗口中 选择接受安装协议 单击 next 继续安装 如图所示 3 在出现选择安
  • C# 提取 PDF 文档中的文本

    安装 IText7 首先在 Nuget 包管理器中 安装 itext7 和 itext7 font asian 如果不安装 itext7 font asian PDF 文件中有非Unicode编码的字符 将会抛出运行时异常 iText IO