增值税发票是否能通过pdf解析工具获得其内容?
1. 运行环境
wsl2(ubuntu docker)
1). 当前使用的 Laravel 版本?
laravel 5.5.5
2). 当前使用的 php/php-fpm 版本?
PHP 版本:
7.2.31
php-fpm 版本:
3). 当前系统
Ubuntu 20.4
4). 业务环境
开发环境
5). 相关软件版本
"smalot/pdfparser": "^2.1"
2. 问题描述?
增值税发票的内容是否无法直接解析亦或是需要被转化一下?
3. 您期望得到的结果?
希望能被正常解析。或者确定无法解析(图例是普通电子发票解析出来的结果)
//: <> (能截图就截图。)
4. 您实际得到的结果?
增值税发票通过pdf解析包去解析内容会得到如下编码的结果
//: <> (有报错信息的话把堆栈信息提供出来)
5.解析代码
private function checkDuplicateInvoices(UploadedFile $file)
{
if ($file->getMimeType() == MimeType::fromExtension("pdf")) {
$parser = new Parser();
$pdf = $parser->parseFile($file->getRealPath());
dd($pdf->getText(1));
}
}
6.猜测
可能是由于增值税发票的特殊性,增值税发票有签名,内容也无法更改,可能读取有加密?
1.部分内容可以读取
// 受hub哥启发发现二维码里就有发票基础信息,没道理解析不出来
// 仔细观察发现基础信息是解析出来了的,只是被\x00给混淆了
// 可能和php版本或者插件有关, 同事的php 7.3用和我相同的代码解析相同的发票并未出现\x00
$result = explode("\n", $text);
$result = str_replace("\x00", "", $result);
// 意外发现:str_replace 可以直接处理数组
发票右上角有一个识别二维码. 拿起你的手机扫一下试一下你就知道咋搞了