🚀 个人主页 极客小俊
✍🏻 作者简介:web开发者、设计师、技术分享博主
🐋 希望大家多多支持一下, 我们一起学习和进步!😄
🏅 如果文章对你有帮助的话,欢迎评论 💬点赞👍🏻 收藏 📂加关注
前言
一些朋友肯定注意到PDF文档
是不能复制其中的文本或文字的, 因为一般PDF文档
都设置了文档不可编辑
, 并且有的时候用户也无法复制其中的文本, 当然这是为了考虑到保证文档和信息的安全性!
但是有时候,在一些特殊的情况下,我们如果真的要从PDF
文档上吧文字信息内容提取出来,也不是没有办法,方法有很多,今天我就介绍其中一种,使用php
来快速提取PDF
文字内容
PDF解析器
要使用php
来提取PDF
文档中的内容,可以使用一些php
为PDF
专门准备的解析器
来实现这个功能
这里我个人推荐一种自己常用的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>";
}
?>
如图
对照一下
如图
"👍点赞" "✍️评论" "收藏❤️"
欢迎一起交流学习❤️❤️💛💛💚💚
好玩 好用 好看
的干货教程可以 点击下方关注❤️ 微信公众号❤️ 说不定有意料之外的收获哦..🤗嘿嘿嘿、嘻嘻嘻🤗!
🌽🍓🍎🍍🍉🍇