Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >php使用PdfParser搭配tcpdf解析pdf文件

php使用PdfParser搭配tcpdf解析pdf文件

作者头像
全栈程序员站长
发布于 2022-10-04 12:51:57
发布于 2022-10-04 12:51:57
2.5K0
举报

大家好,又见面了,我是你们的朋友全栈君。

前几天客户提出一个需求,就是在前台页面搜索文章时,若搜索词在文章附件的pdf文件中有出现的话就要将该文章作为搜索结果。我的思路是后台发布文章时循环检测每一个附件的格式,若附件格式为pdf的话就将里面的文字读取出来 追加到一个$string变量里,然后将$string的作为一个file_text字段的信息保存到数据库后面做搜索的时候使用。

我参考的一个回答地址是:https://baijiahao.baidu.com/s?id=1572245039857772&wfr=spider&for=pc

 $parser = new \Smalot\PdfParser\Parser();         // 调用解析方法,参数为pdf文件路径,返回结果为Document类对象         $document = $parser->parseFile($path);         // 获取所有的页         $pages = $document->getPages();         // // 逐页提取文本         $text = ”;         foreach($pages as $page){         $text.= $page->getText();          }          echo $text;

结果如下图,已经把pdf文件里面的文字读取出来了(扫描件合成的pdf因为好像都是图片所以是读不出来内容的,编辑一个doc文件然后输出为pdf文件这样的就可以将文字读取出来),之后要这么处理就看你自己的需求啦~~~~

当然,你想自己折腾一下的话就继续往下看

ok,现在我们就使用PdfParser搭配tcpdf来读取pdf文件里面的内容。

pdfparser 下载地址 :http://www.pdfparser.org/

下载好pdfparser 后将src里面的Smalot文件夹复制出来(后面下载好的tcpdf文件夹也放到该目录下)

TCPDF 类库下载地址:https://tcpdf.org/

文件目录如图示:

然后将Smalot这个文件夹放到ThinkPHP下面的library

若你用的是tp3.2.3的话还要将pdfparser 里面的类名改成testCotroller.class.php这种格式(3.2.3官方建议这种格式),tcpdf里面的include文件夹里面的类也改。如果使用的是tp5的话就不用

然后将TCPDF文件夹下的include文件夹改名为includes(不知道是不是与引入文件的include关键字冲突,或者改为你喜欢的名字也行),对应include下类的命名空间也改下路径。

然后将TCPDF 下的TcpdfParser类下的

require_once(dirname(__FILE__).’/include/tcpdf_filters.class.php’);

改成use Smalot\TCPDF\includes\tcpdf_filters as TCPDF_FILTERS;

原因好像是使用require_once引入filters这个类的之后TcpdfParser这个类里面就有了两个命名空间,tp规定一个类里面只能有一个命名空间。

整完了这些就可以像前面那样自己写方法去调用啦。

第一次跑不通的话就自己给点耐心打断点慢慢调试。。。。。。。

tp5的话经一位老哥测试将smalot放到extend扩展文件夹,里面的类名根据你的框架配置看是否需要加.class,,然后按上面的原理调用就可以了,其他框架应该也是这个理~~

老哥还反映我那个TCPDF文件太大,删除掉一部分之后还是可以运行,下图是阉割之后的tcpdf <狗头~/>

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/196027.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年9月8日 上,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
SpringBoot Apache Tika 轻松实现各种文档内容解析
在当今的数字时代,各种类型的文档在企业和个人中广泛使用。从PDF和Word文档到Excel电子表格和PowerPoint演示文稿,管理这些文档并从它们中提取有价值的信息变得越来越重要。文档内容解析是指从这些文档中提取和分析文本和元数据的过程,这对于信息检索、搜索和分类等任务非常有用。 Apache Tika是一个强大的开源工具,可以检测和提取超过一千种不同文件类型的元数据和文本。它设计精巧,提供了一个单一的接口,使用户能够轻松地从各种文件中提取内容。将Tika与SpringBoot结合使用,可以创建一个高效且可扩展的文档解析解决方案。 在本文中,我们将逐步介绍如何使用SpringBoot和Apache Tika创建一个应用程序,该应用程序可以解析各种类型的文档并提取其内容。
javpower
2025/05/30
1650
SpringBoot Apache Tika 轻松实现各种文档内容解析
手把手 | 20行Python代码教你批量将PDF转为Word
大数据文摘作品 投稿作者|丁彦军 在日常工作或学习中,经常会遇到这样的无奈: “小任,你把这个PDF中的文件码出来发我” 艹,倒霉,2M的PDF12点也完不了啊! 很多时候在学习时发现许多文档都是PDF格式,PDF格式却不利于学习使用,因此需要将PDF转换为Word文件,但或许你从网上下载了很多软件,但只能转换前五页(如WPS等),要不就是需要收费,那有没有免费的转换软件呢? so,我们给各位带来了一个免费简单快速的方法,手把手教你用Python批量处理PDF格式文件,获取自己想要的内容,存为word形式。
大数据文摘
2018/05/24
2K0
Python:解析PDF文本及表格——pdfminer、tabula、pdfplumber 的用法及对比
pdfminer3k 是 pdfminer 的 python3 版本,主要用于读取 pdf 中的文本。
丹枫无迹
2019/01/22
19.5K1
tcp/ip详解(三卷全)pdf_tcp/ip详解pdf
方法一、在index.php中写入pdfdemo方法
全栈程序员站长
2022/10/04
1.3K0
thinkPHP框架整合tcpdf插件操作示例
本文实例讲述了thinkPHP框架整合tcpdf插件操作。分享给大家供大家参考,具体如下:
用户8675788
2021/07/13
8650
PHP导出成PDF,你用哪个插件。
可以不断添加addPage,添加多页,最后Output输出自己的名字的文件即可。可以看到其中可以插入图片也是没有问题的,写法就按照html写就OK,当然不只是支持HTML,只是这里比较适合这种方式。
友儿
2022/09/11
1.1K0
使用TCPDF撰写和生成PDF文件
某一个合同需要在线生成,其中一部分内容是固定的,而另一部分内容是需要添加和编辑的。
双面人
2019/08/16
3.6K0
Tp5 打开PDF文件乱码的问题「建议收藏」
使用tp3 显示pdf文件没有问题: file = ‘d:/1.pdf’; filename = ‘1.pdf’; header(‘Content-type: application/pdf’); header(‘Content-Disposition: inline; filename=”‘.filename.'”‘); header(‘Content-Transfer-Encoding: binary’); header(‘Accept-Ranges: bytes’); @readfile(file);
全栈程序员站长
2022/07/11
4.7K0
Tp5 打开PDF文件乱码的问题「建议收藏」
搭建自己的PHP MVC框架详解
本文详细讲述了搭建自己的PHP MVC框架的方法。分享给大家供大家参考,具体如下: 前言 说到写PHP的MVC框架,大家想到的第一个词--“造轮子”,是的,一个还没有深厚功力的程序员,写出的PHP框架肯定不如那些出自大神们之手、经过时间和各种项目考验的框架。但我还是准备并且这么做了,主要是因为: 认为有关PHP的方方面面都了解了,但自己学习PHP的时间还短,基础并不扎实,很多常用函数的参数还偶尔要查手册,而且对于PHP的一些较新的特性如命名空间、反射等只是简单的看过,并没有能实际应用过。 PHP的知识多且杂,一个普通的项目往住是业务逻辑代码为主,而框架是一个能把这些知识点能融汇在一起的项目。 在自己写一个框架的时候,也会参考一些我使用过的框架如TP/CI/YII等的源码,在自己看源码时也能帮助自己理解框架,更容易接受以后要使用的框架。 所以说,这次造轮子的目的不是为了造轮子而是为了在造轮子的过程中熟悉其工艺,轮子特点,更好的使用轮子。 如果说写一个完整的PHP框架,那需要掌握的PHP知识点非常多,像设计模式、迭代器、事件与钩子等等,还有许多基础知识的灵活应用。我自认为这些还无法完全掌控,所以我的步骤是先自己搭建一个骨架,然后参考借鉴不同的PHP框架的特点,将其慢慢完善。因为工作原因,而且晚上还要补算法、网络等编程基础,PHP框架部分可能只有周末有时间更新,我会在进行框架功能更新之后,使用的知识点,更新博文。 首先放上框架的目前源码:GITHUB/zhenbianshu 或者点击此处本站下载。 框架整体 首先自己一下PHP的MVC框架的工作流程: 简单来说,它以一个入口文件来接受请求,选择路由,处理请求,返回结果。 当然,几句话完的东西实际上要做的工作很多,PHP框架会在每次接受请求时,定义常量,加载配置文件、基础类,根据访问的URL进行逻辑判断,选择对应的(模块)控制器和方法,并且自动加载对应类,处理完请求后,框架会选择并渲染对应的模板文件,以html页面的形式返回响应。在处理逻辑的时候,还要考虑到错误和异常的处理。 1、作为MVC框架,一定要有一个唯一的入口文件来统领全局,所有的访问请求都会首先进入这个入口文件,如我框架根目录的index.php,在里面,我定义了基本文件夹路径,当前环境,并根据当前环境定义错误报告的级别。 2、PHP中加载另外的文件,使用require和include,它们都是将目标文件内容加载到当前文件内,替换掉require或include语句,require是加载进来就执行,而include是加载进来在需要的时候执行,而它们的_once结构都是表示在写多次的时候只执行一次。 3、框架内的配置变量等使用专用的配置文件来保存,这里我仿照了TP里的数组返回法,用了一个compileConf()函数来解析数组,将数组的键定义为常量,值为数组的值。
用户2323866
2021/06/30
1.2K0
搭建自己的PHP框架心得(一)
本文讲述了一位PHP工程师在技术社区中,如何通过编写PHP框架、使用路由、实现数据库操作、解决高并发问题、优化框架、实现自动加载、命名空间和自动加载、路由选择、总结PHP框架、展示层、数据库类、其他框架的移植等,来提高自己的技术能力。
枕边书
2018/01/04
1.9K0
零代码编程:用ChatGPT对PDF文件标题进行重命名
F:盘的“北交所招股说明书”文件夹下面有很多个PDF文件,但是下载的时候只是根据URL中的文件地址来命名,只是一串数字,看不出和内容的关系。
AIGC部落
2024/06/24
2290
零代码编程:用ChatGPT对PDF文件标题进行重命名
PDF转Word完全免费?这么好的事情我怎么不知道????
现在网络上大部分的PDF转Word都是收费的,基本都是按页收费,有了我们的python代码后,我们就可以完全免费的将PDF转成Word了,这么好的福利我们赶紧来了解一下吧!
我被狗咬了
2019/09/23
9210
PDF转Word完全免费?这么好的事情我怎么不知道????
使用PDFParser解析PDF中的文字
官方文档(文档很清晰,建议直接看官方文档) https://www.pdfparser.org/documentation 安装 composer require smalot/pdfparse
咪啪咪啪
2019/11/15
3.7K0
itext实现pdf自动定位合同签订
需求 需要实现如下效果(最终效果) 思考 需求方的要求就是实现签订合同,实现方法不限,但过程中又提出需要在签章的过程中把签订日期的文字也打上去,这就有点坑了~ 一开始的想法是想办法定位需要签名的位
老梁
2019/09/10
2.7K1
itext实现pdf自动定位合同签订
三大神器助力Python提取pdf文档信息
今天这篇文章是今年最后一篇文章了,因此也是一篇非常有用的技术文章,你可以现在只了解一下并进行收藏,等你需要用到的时候再拿出来看一看,这样就好了。
啃饼思录
2019/02/26
21K0
使用debug_backtrace()做PHP调试
D:\phpnow\vhosts\wordpress.com\wp-includes\l10n.php的第339行,代码如下:
老高的技术博客
2022/12/27
6450
PHP打印出库单,下载与打印
出库单打印出三色单,这个很普遍,以下用PHP来实现出库单的打印预览,主要用到tcpdf插件,整合到laravel项目中。tcpdf插件可以到官网下载最新的版本。我这里用的是最新版本,
php007
2019/08/05
3.2K0
PHP打印出库单,下载与打印
媳妇儿让我给她找一个PDF转word免费工具,找了半天我决定给她写一个出来^-^
之前我媳妇儿让我给她找一个PDF转WORD的免费工具,在网上找了半天发现要不就是收费,要不就是转化的格式混乱。既然网上不能找到好用的免费工具那就直接来写一个吧。人生苦短,我用python。
菜鸟小白的学习分享
2020/07/14
5440
一文贯通python文件读取
不论是数据分析还是机器学习,乃至于高大上的AI,数据源的获取是所有过程的入口。 数据源的存在形式多为数据库或者文件,如果把数据看做一种特殊格式的文件的话,即所有数据源都是文件。获得数据,就是读取文件的操作,文件有各种各样的格式即数据的组织形式,如何方便快捷地获取文件中的内容呢?
半吊子全栈工匠
2018/08/22
1.8K0
python读取pdf提取文字和图片
如下图所示,一份pdf有几十页,每页九张图片, 提取出图片并用图片下方的文本对图片命名
诡途
2022/01/07
8.7K0
python读取pdf提取文字和图片
相关推荐
SpringBoot Apache Tika 轻松实现各种文档内容解析
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档