在一个场景中 我们需要在生成的pdf文件中,写入一些特别的数据,以便读取这些特别的数据,但我这个数据并不希望显示在PDF文件中,是不显示,
于是乎我想到了一个文件信息描述 类似这样
于是顺着这个思路,果真让我找到了方法,具体方法实现如下:
步骤一 先composer 相关扩展
composer require mpdf/mpdf:8.0.3
步骤二 生成pdf
<?php
/**
* 生成pdf 方法
*
*/
public function createFileToPdf($data){
$ext = "pdf";
$filename = microtime(true) . '.' . $ext;
$filepath = $this->createSavePath('supervise'); //根据年月日创建目录
$full_name = BASEPATH . $filepath . $filename; //文件完整路径
//实例化mpdf
$mpdf = new Mpdf();
//设置字体,解决中文乱码
$mpdf->autoLangToFont = true;
$mpdf->autoScriptToLang = true;
$title = "张飞_26_中国_湖北省武汉市XXX";
$mpdf->SetTitle($title);
$html = <<<HTML
<style>
p {
text-align: center;
}
</style>
<p style="text-align: center;font-size: 24px;">协助单{$data['date']}</p>
<p>协助单位:{$data['depart_name']}</p>
<p><a href="{$data['license_plate_img']}" > <img height="150" src="{$data['license_plate_img']}" alt="" srcset=""></a></p>
<p>{$data['require_text']}</p>
HTML;
$mpdf->WriteHTML($html);
// $res = $mpdf->Output($full_name,'S'); //输出文件流
$mpdf->Output($full_name);
$res_data = [
'path' => $full_name,
'url' => 'https://' .WEB_IP. $filepath . $filename,
'file_name' => $filename,
];
return $res_data;
}
/**
* 创建目录
* @param $dir 目录名称
* @return bool
*/
protected function createSavePath($dir)
{
//$upload_path = $this->config['EXPORT_PATH']; //上传路径
$export_path = "/export_file/";
$filepath = $export_path . $dir . '/' . date('Ymd') . '/';
if (!file_exists(BASEPATH . $filepath)) {
mkdir(BASEPATH . $filepath, 0777, true);
}
return $filepath;
}
其中这里是关键 关键 关键
$title = "张飞_26_中国_湖北省武汉市XXX";
$mpdf->SetTitle($title);
这里就是将这个字符串写入到pdf 文件描述信息中,此信息并不能直接通过PDF查看,需要使用代码进行读取处理。
步骤三 解码文件描述信息
composer require smalot/pdfparser
$parser = new \Smalot\PdfParser\Parser();
$file = "/web/222.pdf";
$pdf = $parser->parseFile($file);
$details = $pdf->getDetails();
var_dump($details);
end