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

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

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

前几天客户提出一个需求,就是在前台页面搜索文章时,若搜索词在文章附件的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文件这样的就可以将文字读取出来),之后要这么处理就看你自己的需求啦~~~~

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

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

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

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

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

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

文件目录如图示:

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

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

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

若你用的是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规定一个类里面只能有一个命名空间。

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

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

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

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

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

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

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Wireshark使用教程

    Wireshark使用教程文章目录安装使用开始捕获以wireshark2.6.3汉化版为例安装除了路径是自定义之外,其它均默认即可。使用开始捕获菜单“捕获-选项”,设置需要捕获的网络适配器,点击“开始”。也可以在菜单“捕获-开始”、“捕获-结束”来控制开始结束。在“捕获-捕获过滤器”编辑捕获表达式在上述“捕获”菜单中进行的操作,也可以在工具栏进行,如下图捕获结果着色规则在菜单“视图-着色规则”…

    2022年6月16日
    32
  • 乐观锁和悲观锁实现(java乐观锁实现)

    推荐阅读:如何在技术领域持续成长后端程序员必备的Linux基础知识后端必备——数据通信知识(RPC、消息队列)一站式总结何谓悲观锁与乐观锁乐观锁对应于生活中乐观的人总是想着事情往好的方向发展,悲观锁对应于生活中悲观的人总是想着事情往坏的方向发展。这两种人各有优缺点,不能不以场景而定说一种人好于另外一种人。悲观锁总是假设最坏的情况,每次去拿数据的时候都认为…

    2022年4月18日
    49
  • BitBlt参数详解[通俗易懂]

    BitBlt参数详解[通俗易懂]对BitBlt()这个函数的最后一个参数的意义一直不是太了解,只会使用SRCCOPY,最近的一个项目使用到了这个函数,但是要求要背景透明的将源绘制到目标区域上,源是背景色和字,怎么只拷贝字而把背景色透明化呢??我的解决方法是,把源的背景色绘制为白色,字为黑色,然后在BitBlt的时候最后一个参数用SRCAND,果然可以达到我要的效果,这是为什么呢?呵呵趁此机会好好看看这个参数介绍吧~~开始之前,首先要明白,绘制其实就是在给每一个像素点涂颜色,每种颜色都是由红蓝黄三要素组合而成,因此通过RGB颜色值可以

    2022年10月18日
    2
  • java List去重,并且保持顺序

    java List去重,并且保持顺序List<T>list=newArrayList<>(); Setset=newHashSet();List<T>newList=newArrayList<>();for(Telement:list){//set能添加进去就代表不是重复的元素if(set.add(element.getId()))newList.add(element);}l..

    2022年5月18日
    117
  • AB PLC 报错Compact I/O end cap missing

    AB PLC 报错Compact I/O end cap missing•(Type03)I/OFault•(Code00)CompactI/Oendcapmissing报错就是少了这个右终端挡板

    2025年8月7日
    4
  • c实现set集合

    c实现set集合集合有点编程语言会带有,有的没有。但是我想redis的集合set你一定听说过或者用过。下面咱们用链表来实现set相信有了前面的基础我们可以很容易的实现set集合需要引入我的链表的list.c和list.h头文件////set.h//set////Createdbybikangon16/9/18.//Copyright(c)2016年bikang.Allri

    2022年5月9日
    53

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号