做旅游平台服务系统,老板出需求让把行程单导出成pdf格式的文件。好在系统是使用thinkphp 3.2进行开发,PHP的扩展组件还是比较强大的,在网上找到了一个第三方类库mpdf,我使用的是6.0的版本,现在贴出代码分享。
类库存放路径:xxxx\ThinkPHP\Library\Vendor\mpdf文件夹(分享插件资源会在末尾贴给大家)
控制器方法:
public function export_travel(){//页面按钮点击,跳转这个方法,think模板文件夹里最好放一个模板文件,起名为export_travel.html
$name = "xxxxxx行程单";// $html = $this->fetch();//获取视图的渲染模板 export_pdf($name,$html);//export_pdf是我写在公共函数库的,以便其他地方也调用。}公共函数:
function export_pdf($name,$html,$type){
$style = "border-bottom: 1px solid #4F81BD;";
$header='
'.($type ? "" :$name).'
';
$footer='
'.($type ? "" :$name).' '.($type ? "" : '页码:{PAGENO}/{nb} ' )
.'
';
Vendor('mpdf.mpdf');
//设置中文编码
$mpdf=new \mPDF('zh-CN','A4','', '宋体', 25,25,20,20);
$mpdf -> useAdobeCJK = TRUE;
$mpdf -> autoScriptToLang = true;
$mpdf -> autoLangToFont = true;
$mpdf->SetDisplayMode('fullpage');
//$mpdf->WriteHTML(' ');
$mpdf->SetHTMLHeader($header);
$mpdf->SetHTMLFooter($footer);
$mpdf->WriteHTML($html);//可以看到,$html是作为一个变量传递的,所以你也可以不必像我一样去获取页面模板,如果你的内容足够简单,也可以自己在方法里赋值传递。
//删除pdf第一页(由于设置pdf尺寸导致多出了一页)
//$mpdf->DeletePages(1,1);
//$mpdf->showWatermarkText = true;
//$mpdf->SetAutoFont();
$name = $name.'.pdf';
$mpdf->Output($name,'I');
exit;
}
这样就可以实现导出功能。在网页中最好将左右的图片路径设置为绝对路径,这样就可以将图片也一并导出,布局样式尽量采用标签内嵌。
下载链接:https://download.csdn.net/download/zb27149/10407577