php 抓取网页生成图片(关于mPDFmPDF的一些小知识,你知道几个?)
优采云 发布时间: 2022-04-19 02:28php 抓取网页生成图片(关于mPDFmPDF的一些小知识,你知道几个?)
关于 mPDF
mPDF 是一个 PHP 库,可以从 UTF-8 编码的 HTML 生成 PDF 文件。
为什么要引入 mPDF? HTML文档需要生成pdf格式供客户端下载或预览;前端可以直接使用html2canvas,JS前端插件。 html2canvas其实就是截图,就是把前端页面的截图变成图片,然后保存为pdf。文档中的文字无法复制,支持自动分页,数据量大时使用不好; mPDF,支持从服务端渲染,根据需要在客户端进行预览、下载等设置;开发一个实用的版本
软件:mPDF、Unicode-HTML 免费 PDF *敏*感*词* *
版本:6.0
安装
使用composer安装;或者直接将所有mPDF工程包复制到资源导入目录下,这里不再赘述。
打电话
/*打印PDF详情页
* $url, 域名;
* $pro_id, 项目Id;
* $pro_types,机构类型;
* $waterMark,水印文字;
* $pro_serial,项目编号;
*/
function printPdf($url, $pro_id, $pro_types, $waterMark, $pro_serial)
{
require_once("libs/mpdf/mpdf.php");
$mpdf = new mPDF('utf-8', 'A4', '', '宋体', 0, 0, 20, 10);
//添加水印;
$mpdf->SetWatermarkText($waterMark, 0.1);//水印文字,透明度
$mpdf->showWatermarkText = true; //开启水印
if (preg_match("/([\x81-\xfe][\x40-\xfe])/", $waterMark, $match)) {
$mpdf->watermark_font = 'GB';
}
//获取内容;
$mpdf->useAdobeCJK = true;
$html = file_get_contents($url . '?m=Surveyor&a=surveyorDetail&act=detail&pro_id=' . $pro_id . '&pro_types=' . $pro_types);
//设置PDF页脚内容
$footer = '页码: {PAGENO} / {nb}';
//添加页眉和页脚到pdf中
$mpdf->SetHTMLFooter($footer);
//设置pdf显示方式
$mpdf->SetDisplayMode('fullpage');
//创建pdf文件
$mpdf->WriteHTML($html);
//输出pdf
$mpdf->Output($pro_serial . '.pdf', 'I');//'D';下载模式
exit;
}
实例化
$mpdf = new mPDF('utf-8', 'A4', '', '宋体', 0, 0, 20, 10);
访问文档内容
为避免php封装函数涉及大量HTML混合文本,在项目应用中,使用file_get_contents函数获取需要生成的PDF文档网页版的详情页,然后mPDF类调用被封装了两次。
$html = file_get_contents($url . '?m=Surveyor&a=surveyorDetail&act=detail&pro_id=' . $pro_id . '&pro_types=' . $pro_types);
水印文字
//添加水印;
$mpdf->SetWatermarkText($waterMark, 0.1);//水印文字,透明度
$mpdf->showWatermarkText = true; //开启水印
if (preg_match("/([\x81-\xfe][\x40-\xfe])/", $waterMark, $match)) {
$mpdf->watermark_font = 'GB';
}
输出模式配置
$mpdf->Output($filename,$type);
//$type='I';在线预览模式
//$type='D';下载模式
//$type='f';生成后保存到服务器
//$type='s';返回字符串,此模式下$filename会被忽视
填坑记录
为了方便排版,项目开始时使用了表格表格进行排版。一种是匹配word文档的排版方式,但是表格的排版也简单实用。
机构信息
机构名称
{$data1["agency_name"]}
机构负责人
{$data1["agency_contact"]}
*敏*感*词*
{$data1["agency_phone"]}
机构地址
{$data1["agency_address"]}
机构级别
{$data1["agency_level"]}
表格中的字符串过长时,文字字体会变小,不会自动分页
$mpdf->shrink_tables_to_fit=0
传承脉络
{$data3["pro_vein"]}
改成div的布局,成功解决。
@