【PHP趣味技术】分分钟教会你轻松采集PDF文本内容 《重庆话真的太吃皮老!》

🚀 个人主页 极客小俊
✍🏻 作者简介:web开发者、设计师、技术分享博主
🐋 希望大家多多支持一下, 我们一起学习和进步!😄
🏅 如果文章对你有帮助的话,欢迎评论 💬点赞👍🏻 收藏 📂加关注

前言

一些朋友肯定注意到PDF文档是不能复制其中的文本或文字的, 因为一般PDF文档都设置了文档不可编辑, 并且有的时候用户也无法复制其中的文本, 当然这是为了考虑到保证文档和信息的安全性!

但是有时候,在一些特殊的情况下,我们如果真的要从PDF文档上吧文字信息内容提取出来,也不是没有办法,方法有很多,今天我就介绍其中一种,使用php来快速提取PDF文字内容

PDF解析器

要使用php来提取PDF文档中的内容,可以使用一些phpPDF专门准备的解析器来实现这个功能

这里我个人推荐一种自己常用的PDF解析器:PDFParser

PDFParser

介绍

PDFParser是一个免费的库, 我们可以在GitHub上找到它的源代码,并且可以通过Composer免费地将其安装到PHP项目中。

这个库提供了一个简单而强大的API解析PDF文件并提取其中的文本内容, 我们也可以使用它来创建自己的PDF文本提取工具,最关键的是无需支付任何费用,也就是免费!

地址 https://github.com/smalot/pdfparser

如图

安装 PDFParser

首先要确定自己的PHP 版本要在7.1+ 然后我们用Composer去安装它

然后我们可以使用cmd命令行窗口手动打开我们的web项目路径 ,执行以下命令

composer require smalot/pdfparser

这是我的项目路径!

如图

这时候,Composer就帮助我们把smalot/pdfparser这个插件安装到我们的web项目下了!

使用PDFParser提取PDF文本内容

我们现在file目录下有两个pdf文件, 一个英文pdf、一个中文pdf

如图

现在的需要就是要把它的内容提取出来,打印到网页上,现在就让我们来试试吧!

创建Parser对象

首先新建一个index.php文件,里面写入以下代码:

//引入autoload.php
include 'vendor/autoload.php';
//创建Parser对象
$parser = new \Smalot\PdfParser\Parser();
//提取PDF文件
$pdf = $parser->parseFile('你自己的PDF文件路径.pdf');
获取PDF基本信息

然后我们就可以利用创建出来的Parser对象来获取PDF中的文本内容了

获取PDF文件的基本信息包括一些创建者,制作人,创建日期,修改日期,作者,标题,页面数量等等

我们只需要执行getDetails()方法就可以获取到了, 会返回一个数组

代码如下

$details = $pdf->getDetails();
echo "<pre>";
print_r($details);
echo "</pre>";

如图

我们可以打开PDF文件对比一下

获取PDF文件内所有文本内容

如果我们要获取PDF中的所有文本内容,我们只需要执行getText()方法即可获取

代码如下

//获取PDF文件所有文本内容
$text = $pdf->getText();
//输出
echo $text;

如图

但是缺点就是密密麻麻的 根本看不清楚!

获取PDF文件中的某一页

上面获取所有的内容,这样不方便观看

我们其实也可以利用创建出来的Parser对象来一页一页的去获取PDF文件中的内容!

方法很简单,使用getPages()方法再结合getText()方法就可以了

代码如下

//获取PDF所有页
$pages = $pdf->getPages();//格式化输出 获取PDF某一页的所有文本内容
echo "<pre>";
echo $pages[1]->getText();
echo "</pre>";

如图

我们也可以对照一下源文件是不是这样

如图

循环输出PDF文件中的每一页文本内容

一个一个的去修改索引太麻烦了,我们完全可以使用循环把每一页都打印到web上,并且格式化输出

代码如下

//获取所有页
$pages = $pdf->getPages();
//循环所有页
foreach($pages as $key=>$page){//格式化echo "<pre>";echo $pages[$key]->getText();echo "</pre>";//每一页分隔符echo "<hr>";
}

如图

怎么样是不是很简单!

我们来吧PDF文件换成一个中文的试试看效果, 这里我准备了一个test2.pdf的中文PDF文件

代码如下

<?php
//引入autoload.php
include 'vendor/autoload.php';
//创建Parser对象
$parser = new \Smalot\PdfParser\Parser();
//提取PDF文件
$pdf = $parser->parseFile('file/test2.pdf');
//获取所有页
$pages = $pdf->getPages();
//循环所有页
foreach($pages as $key=>$page){//格式化echo "<pre>";echo $pages[$key]->getText();echo "</pre>";//每一页分隔符echo "<hr>";
}
?>

如图

对照一下

如图

"👍点赞" "✍️评论" "收藏❤️"

大家的支持就是我坚持下去的动力!

如果以上内容有任何错误或者不准确的地方,🤗🤗🤗欢迎在下面 👇👇👇 留个言指出、或者你有更好的想法,
欢迎一起交流学习❤️❤️💛💛💚💚

更多 好玩 好用 好看的干货教程可以 点击下方关注❤️ 微信公众号❤️
说不定有意料之外的收获哦..🤗嘿嘿嘿、嘻嘻嘻🤗!
🌽🍓🍎🍍🍉🍇

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/511351.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CentOS 7.9 二进制离线部署 Kubernetes v1.28.7

文章目录 1. 简介2. 软件版本3. 预备条件3.1 安装操作系统3.2 检查内核3.3 配置主机名3.4 配置互信3.5 配置 yum&#xff08;可选&#xff09;3.6 配置 NFS&#xff08;可选&#xff09; 4 下载介质4.1 下载 k8s 介质4.2 下载镜像4.3 介质打包 5. 安装镜像仓库(可选)6. 镜像入库…

#QT(智能家居界面-界面切换)

1.IDE&#xff1a;QTCreator 2.实验 3.记录 &#xff08;1&#xff09;创建一个新界面&#xff08;UI界面&#xff09; &#xff08;2&#xff09;可以看到新加入一个ui文件&#xff0c;双击打开&#xff0c;设置窗口大小与登录界面一致 &#xff08;3&#xff09;加入几个PUS…

蓝桥杯练习题——dp

五部曲&#xff08;代码随想录&#xff09; 1.确定 dp 数组以及下标含义 2.确定递推公式 3.确定 dp 数组初始化 4.确定遍历顺序 5.debug 入门题 1.斐波那契数 思路 1.f[i]&#xff1a;第 i 个数的值 2.f[i] f[i - 1] f[i - 2] 3.f[0] 0, f[1] 1 4.顺序遍历 5.记得特判 …

python3安装chrome,chromedriver亲测有效

客户用python写了个脚本&#xff0c;需要用到chrome和chromedriver扩展&#xff0c;结果说安装不了&#xff0c;各种报错&#xff0c;好吧我来研究一下。众所周知linux自带python2.7&#xff0c;根据报错查了一下资料发现是版本冲突导致的&#xff0c;系统自带2.7&#xff0c;代…

C++ deque详解以及容器适配器

目录 1.容器适配器 2.deque的使用 2.1deque的介绍 2.2deque的缺陷 2.3deque作为stack和queue的可行性 2.4 deque类的使用 2.4.1deque的构造函数 2.4.2deque容量操作 2.4.3deque赋值&#xff0c;插入 1.容器适配器 适配器是一种设计模式&#xff08;设计模式是一套被人…

解决uni-app中使用webview键盘弹起遮挡input输入框问题

这个平平无奇的回答&#xff0c;可能是全网最靠谱的解决方案。 这里我用的是vue3 setup .vue文件的方式 <view> <web-view :fullscreen"false" :webview-styles"{top: statusBarHeight40,height:height,progress: {color: green,height:1px } }"…

新一代湖仓集存储,多模型统一架构,高效挖掘数据价值

星环科技TDH一直致力于给用户带来高性能、高可靠的一站式大数据基础平台&#xff0c;满足对海量数据的存储和复杂业务的处理需求。 同时在易用性方面持续深耕&#xff0c;降低用户开发和运维成本&#xff0c;让数据处理平民化&#xff0c;助力用户以更便捷、高效的方式去挖掘数…

YOLOv9独家改进|使用HWD(小波下采样)模块改进ADown

专栏介绍&#xff1a;YOLOv9改进系列 | 包含深度学习最新创新&#xff0c;主力高效涨点&#xff01;&#xff01;&#xff01; 一、改进点介绍 HWD是一种下采样模型&#xff0c;应用了小波变换的方法。 ADown是YOLOv9中的下采样模块&#xff0c;对不同的数据场景具有一定的可学…

SpringCloud-RabbitMQ消息模型

本文深入介绍了RabbitMQ消息模型&#xff0c;涵盖了基本消息队列、工作消息队列、广播、路由和主题等五种常见消息模型。每种模型都具有独特的特点和适用场景&#xff0c;为开发者提供了灵活而强大的消息传递工具。通过这些模型&#xff0c;RabbitMQ实现了解耦、异步通信以及高…

MyCAT学习——在openEuler22.03中安装MyCAT2(网盘下载版)

准备工作 因为MyCAT 2基于JDK 1.8开发。也需要在虚拟机中安装JDK&#xff08;JDK官网就能下载&#xff0c;我这提供一个捷径&#xff09; jdk-8u401-linux-x64.rpmhttps://pan.baidu.com/s/1ywcDsxYOmfZONpmH9oDjfw?pwdrhel下载对应的tar安装包,以及对应的jar包 安装程序包…

快速开发一个鸿蒙的页面

文章目录 前言常用组件快速开启简单的鸿蒙页面总结 一、前言 鸿蒙要想快速上手&#xff0c;那么就需要对基础的组件使用比较熟悉&#xff0c;这里就罗列开发中常见的基础组件的使用。 只要是写android的&#xff0c;对于这些组件的使用还是能很快上手的&#xff0c;只要多多…

低空经济20人|卓翼智能任雪峰:以技术驱动市场,引领无人机细分领域创新

作为国内系留无人机领域的领头羊企业&#xff0c;卓翼智能致力于提供智能无人系统解决方案。本期“低空经济20人”请到卓翼智能CEO任雪峰分享他对系留无人机研发应用的经验以及未来无人机行业生态发展的观点。 如今&#xff0c;无人机的应用场景逐渐广泛&#xff0c;在社会发展…