php 抓取网页生成图片(关于mPDFmPDF的一些小知识,你知道几个?)

优采云 发布时间: 2022-04-19 02:28

  php 抓取网页生成图片(关于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的布局,成功解决。

  @

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线