thinkphp 通过mpdf给pdf文件添加骑缝章
骑缝章 使用mpdf生成,这里我有个坑迈不过去。
mpdf 版本 8.0+
就是使用 $mpdf->writeHtml($html); 生成pdf的过程中不能加盖骑缝章,因为不知道在那个地方插入图片这个命令,也没有分页的命令,找不到定位到pdf在哪一页的方法。所以找了一个比较傻缺的办法:首先生成pdf,然后把生成的pdf再生成一遍加入骑缝章。如果有更高的方法请告诉有代码洁癖的我 十分感谢。
下面是一个迂回的方法:
环境:thinkphp6 Mpdf8.1.2
第一步简单,就是自己生成一个pdf文件
$mpdf = new Mpdf([
'autoScriptToLang' => true,
'autoLangToFont' => true,
'setAutoTopMargin' => 'stretch',
'autoMarginPadding' => 3,
'format' => 'A4',
'orientation' => 'P',
'adjustFontDescLineheight' => 1.4
]);
$head = $this->fetch("inc/report_head");
$mpdf->SetHTMLHeader($head); //页眉
$reportInfo = $this->fetch("inc/report_info");
$itemInfo = $this->fetch("inc/report_item_list"); //两部分的主体
$styleSheet = <<<CSS
td{padding:10px;}
CSS;
$mpdf->WriteHTML($styleSheet,\Mpdf\HTMLParserMode::HEADER_CSS); //加载样式
//生成PDF
$mpdf->WriteHTML($reportInfo.'<pagebreak>' . $itemInfo);
$file_name = $report['report_num']."_".time() . '.pdf';
$mpdf->Output($file_name);这样就得到了一个pdf文件 $file_name
然后第二步:
$mpdf2 = new Mpdf();
$pagecount = $mpdf2->setSourceFile($file_name);
for($i=1;$i<=$pagecount;$i++){
$tplId = $mpdf2->importPage($i);
$mpdf2->useTemplate($tplId);
$imgPath = $this->cutImg("upload/zhang/zhang.png",$pagecount,$i);
$mpdf2->Image($imgPath, (210-(40/$pagecount)), 70, 40/$pagecount, 40, 'png', '', true, false);
if($i < $pagecount){
$mpdf2->AddPage();
}
}
$mpdf2->Output($file_name,true);
unlink($file_name);获取 这个pdf文件的页数 然后每页插入一张图片;使用 cutImg() 这个方法;
public function cutImg($img_path,$cut_numbers,$use_index){
$image = Image::open($img_path);
$dirname = dirname($img_path);
$basename = basename($img_path,'.'.$image->type());
$out_path = $dirname."/".$basename."-".$cut_numbers.'-'.$use_index.".".$image->type();
if(file_exists($out_path)){
return $out_path;
}
$width = $image->width();
$height = $image->height();
$per_width = $width / $cut_numbers;
$start = $per_width * ($use_index - 1);
$image->crop($per_width,$height,$start,0);
$image->save($out_path,$image->type());
return $out_path;
}