使用mpdf生成pdf文件
本文主要需求是将html页面转换为pdf文档
1、安装mpdf工具类 (composer方式)
composer require mpdf/mpdf:8.0.3
2、控制器里调用
<?php
/**
* 生产pdf 方法一
*
*/
public function create_pdf(){
//$mpdf = new \Mpdf\Mpdf();
$mpdf = new \Mpdf\Mpdf([
'mode' => 'UTF-8', 'format' => 'A4', 'default_font_size' => 40, 'default_font' => '', 'margin_left' => 20, 'margin_right' => 20
]);
$mpdf->autoScriptToLang = true;//支持中文设置
$mpdf->autoLangToFont = true;//支持中文设置
$mpdf->WriteHTML('<h1>你好啊,世界!hello word</h1><p style="color: blue;fontsize:14px;">http://www.baidu.com</p>');
$path = FILE_UPLOAD.date('YmdHis').'_'.mt_rand(1,5).'.pdf';
$mpdf->Output();//直接在页面显示pdf页面内容
//$mpdf->Output($path,'f');//保存pdf文件到指定目录
}
/**
* 生产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;
$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;
}
?>
注:这里PDF插入图片 图片需要正常访问,已经生成pdf 后,该图片与PDF中的图片已经不存在关联了,所以生成pdf 后,原图片如果被删除了,不影响PDF文件中图片的正常显示!