【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>";
}
?>

如图

对照一下

如图

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

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值