php解析bt,PHP通过PDFParser解析PDF文件

本文介绍了如何使用PHP第三方类库PDFParser来读取和解析PDF文件,验证从远程获取的PDF文件是否受损以及文件内容是否与提供的跟踪号一致。通过Composer安装PDFParser库,并展示了具体的代码示例,包括读取PDF内容、获取文件详情以及实现验证跟踪号的函数。文章还提供了异常处理机制,确保在PDF解析出错时能返回友好提示。
摘要由CSDN通过智能技术生成

之前一直找到的资料都是教你怎么生成pdf文档,比如:TCPDF、FPDF、wkhtmltopdf。而我碰到的项目里需要验证从远程获取的pdf文件是否受损、文件内容是否一致这些问题,这些都不能直接提供给我读取pdf的功能,碰巧找到了一个可以读取并解析PDF文档的第三方类库PDFParser,该类库非常简单好用,可以直奔官网了解。

一、安装步骤

我这里用的是CI框架,但都可用composer包管理方式安装到项目中,进行开发调用

将PDFParser加入composer.json文件中

f6e5d882acf491287b9b85c9c1544383.png

项目根目录下打开命令行并执行:composer update smalot/pdfparser

如果发现update不下来,可以修改当前项目的 composer.json 配置文件,打开命令行窗口(windows用户)或控制台(Linux、Mac 用户),进入你的项目的根目录(也就是 composer.json 文件所在目录),执行如下命令:composer config repo.packagist composer https://packagist.phpcomposer.com,再重试。当然,如果本地没安装composer,请前往composer官网自行安装。

二、示例代码

读取pdf文件内容、获取文件详情

//引入pdf解析第三方类库

$vendorAutoloadFile = APPPATH.'..'.DIRECTORY_SEPARATOR.'vendor'.DIRECTORY_SEPARATOR.'autoload.php';

require_once($vendorAutoloadFile);

$pdfFile = '/temp/label/HnEms/LS955518275CN.pdf';

//读取pdf,验证跟踪号是否一致

// Parse pdf file and build necessary objects.

$parser = new \Smalot\PdfParser\Parser();

$pdfPath = $_SERVER['DOCUMENT_ROOT'].$pdfFile;

$pdf = $parser->parseFile($pdfPath);

$text = $pdf->getText();

echo $text;

echo '


';

// Retrieve all details from the pdf file.

$details = $pdf->getDetails();

var_dump($details);

die;

执行结果展示:

04660a9c8d4e4b4913ce53a0900d4f43.png

三、实践应用

这里验证pdf文档中跟踪号是否和提供的一致,不一致返回假,若pdf是损坏的则返回false。函数也提供了返回异常消息。

$trackingNumber = 'LS955518275CN';

$pdfFile = '/temp/label/Chukou1/3559675.pdf';

//仅验证pdf文件是否有效

//$result = verifyValidLabelPdf($trackingNumber, $pdfFile);

//验证pdf是否有效,无效则返回无效的原因

$result = verifyValidLabelPdf($trackingNumber, $pdfFile, true);

var_dump($result);

/**

* 验证面单pdf文件是否完整(文件不存在、损坏和跟踪号不一致等情况)

* @param string $trackingNumber 跟踪号

* eg. $trackingNumber = 'LS955518275CN';

* @param string $pdfFile pdf文件路径

* @param bool $showExceptionMessage 默认为false,不返回异常消息,为true时,出现异常会返回异常消息

* @return bool true pdf有效,false pdf无效

*

* Attention please : 该方法异常处理千万不要去掉,第三方类库PdfParser解析PDF出错时会抛异常,

* 这里的异常处理也可以接收PdfParser抛出来的异常信息,进行友好提示

*/

function verifyValidLabelPdf($trackingNumber, $pdfFile, $showExceptionMessage = false)

{

try{

$pdfPath = $_SERVER['DOCUMENT_ROOT'].$pdfFile;

//验证文件是否存在

if (!file_exists($pdfPath) || !is_file($pdfPath)){

throw new Exception('pdf文件不存在');

}

//引入PdfParser第三方类库

$vendorAutoloadFile = APPPATH.'..'.DIRECTORY_SEPARATOR.'vendor'.DIRECTORY_SEPARATOR.'autoload.php';

require_once($vendorAutoloadFile);

//读取pdf,验证跟踪号是否一致

// Parse pdf file and build necessary objects.

$parser = new \Smalot\PdfParser\Parser();

$pdf = $parser->parseFile($pdfPath);

$text = $pdf->getText();

//验证跟踪号是否一致

if (strpos($text, $trackingNumber) === false){

throw new Exception('跟踪号不一致');

}

return true;

}catch (Exception $ex){

//获取错误类型 pdf文件可能不存在、损坏等无法加载

if ($showExceptionMessage === true){

//接收异常提示消息并返回

$message = $ex->getMessage();

return $message;

}

return false;

}

}

四、参考资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值