1、使用 MPDF60 包

2、防止中文乱码:修改MPDF/MPDF60/config.php中

$this->autoLangToFont = true;
$this->autoScriptToLang = true;

3、引入类文件:mpdf.php

方式一:直接放在Application同级,通过include_once 引入

方式二:放在vendor/ 下面,引入

两种方式均可以,我这里以第一种示例,因为它在其他框架也可以使用

4、代码:(tp3.2.X示例)

//PC端,利用php服务端打印pdf文件 -- addBy 徐正宗 2018/07/18
public function printPdf(){
header("Content-type: text/html; charset=utf-8"); $this->assign('title','下载文件');
$id = I('id');
if(!$id || !is_numeric($id)){
$this->error('参数丢失');
}else{ //产品详情
$list = M("product")->where('status in(1,-1,-2) and id='.intval($id))->find();
if($list){
//获取行程安排
$xcap = M('product_plan')->where('pro_id='.intval($id))->select(); //html解码
$list['pic'] = 'http://'.$_SERVER['HTTP_HOST'].'/'.$list['pic'];
$list['detail'] = htmlspecialchars_decode($list['detail']);
$list['fee_desc'] = htmlspecialchars_decode($list['fee_desc']);
$list['notice'] = htmlspecialchars_decode($list['notice']);
$list['shopping_notice'] = htmlspecialchars_decode($list['shopping_notice']);
$list['before_buy'] = htmlspecialchars_decode($list['before_buy']);
}else{
$list = array();
$xcap = array(array());
}
$this->assign('_list',$list);
$this->assign('_xcap',$xcap); //执行pdf文件生成
include_once C('S_ROOT').'/../MPDF/MPDF60/mpdf.php'; //实际路径 /www/项目名/Application/../MPDF/MPDF60/mpdf.php
//实例化mpdf
$mpdf=new \mPDF('utf-8','A4','','宋体',0,0,20,10); //设置字体,解决中文乱码,前提是:修改MPDF/MPDF60/config.php中autoScriptToLang 和 autoLangToFont 均为true
$mpdf->useAdobeCJK = true;
//$mpdf->SetAutoFont(AUTOFONT_ALL);//使用6.0以上版本不需要 // $mpdf=new \mPDF('+aCJK','A4','','',32,25,27,25,16,13);
// $mpdf->autoLangToFont = true;
// $mpdf->useAdobeCJK = true;
//获取要生成的静态文件
$html=$this->fetch('Product/detail_fetch');
//$html = '中国'; //echo $html;exit; //设置PDF页眉内容
$header='<table width="95%" style="margin:0 auto;border-bottom: 1px solid #4F81BD; vertical-align: middle; font-family:
serif; font-size: 9pt; color: #000088;"><tr>
<td width="10%"></td>
<td width="80%" align="center" style="font-size:16px;color:#A0A0A0"></td>
<td width="10%" style="text-align: right;"></td>
</tr></table>'; //设置PDF页脚内容
$footer='<table width="100%" style=" vertical-align: bottom; font-family:
serif; font-size: 9pt; color: #000088;"><tr style="height:30px"></tr><tr>
<td width="10%"></td>
<td width="80%" align="center" style="font-size:14px;color:#A0A0A0"></td>
<td width="10%" style="text-align: left;">页码:{PAGENO}/{nb}</td>
</tr></table>'; //添加页眉和页脚到pdf中
$mpdf->SetHTMLHeader($header);
$mpdf->SetHTMLFooter($footer); //设置pdf显示方式
$mpdf->SetDisplayMode('fullpage'); //设置pdf的尺寸为270mm*397mm
//$mpdf->WriteHTML('<pagebreak sheet-size="270mm 397mm" />'); //创建pdf文件
$mpdf->WriteHTML($html); //删除pdf第一页(由于设置pdf尺寸导致多出了一页)
//$mpdf->DeletePages(1,1); //输出pdf
$mpdf->Output('旅游行程单.pdf','D');//可以写成下载此pdf $mpdf->Output('文件名','D'); exit; }
}

5、效果:

【php导出pdf文件】php将html 导出成pdf文件(MPDF60),支持完美分页,注意是完美!!的更多相关文章

  1. 使用Spire PDF for .NET将HTML转换成PDF文档

    目录 开发环境说明 Spire PDF for .NET (free edition)体验 资源下载 开发环境说明 Microsoft Visual Studio 2013 Ultimate Edit ...

  2. jar包/class文件如何快速反编译成java文件

    有时编写的java代码打包为可执行jar包后需要查看工程结构是否是且只有我们需要的包,故需要查看jar包层级. 1.windows系统可以直接在网上下载jd-gui.exe包,然后傻瓜安装: 2.Ma ...

  3. 在Linux下将HTML文件转换成PDF文件

    今天要写一个上交的作业,本来是想用Office Word来写的,但是,我的Office貌似不能用了,但是,Linux下的LibreOffice写出的文档,在打印的时候是经常出现乱码的.所以,后来想到可 ...

  4. word ppt excel文档转换成pdf

    1.把word文档转换成pdf (1).添加引用 using Microsoft.Office.Interop.Word; 添加引用 (2).转换方法 /// <summary> /// ...

  5. 将博客转成pdf

    前些天无意间看到了“birdben”的博客,写的比较详细,但是最新的文章更新时间是“2017-05-07”,时间很是久远,本打算有时间认真学习一下博主所写的文章,但是担心网站会因为某些原因停止服务,于 ...

  6. 将java文件编译成class文件

    一般情况下,在myeclipse中保存java文件后会自动编译成class文件,但是这种情况只能编译当前工程的java文件,但是如果需要编译不是一个工程的java文件,比如在网上拷贝的java文件改如 ...

  7. JavaWeb项目生成PDF文件添加水印图片并导出

    一.前言 首先需要在Maven中添加相应的jar包依赖,若项目没用到Maven,也可自行下载相应所需的jar包(itextpdf.jar 与 itext-asian.jar),如下图所示.点此下载 M ...

  8. SpringBoot 集成Swagger2自动生成文档和导出成静态文件

    目录 1. 简介 2. 集成Swagger2 2.1 导入Swagger库 2.2 配置Swagger基本信息 2.3 使用Swagger注解 2.4 文档效果图 3. 常用注解介绍 4. Swagg ...

  9. 如何在eclipse将程序导出成jar文件

    如何在eclipse将程序导出成jar文件 听语音 | 浏览:916 | 更新:2015-08-22 17:57 1 2 3 4 5 6 7 分步阅读 一键约师傅 百度师傅为你的电脑系统,选个靠谱师傅 ...

随机推荐

  1. 深度学习Github排名,很不错的介绍

    今天看到这篇文章,把深度学习github排名靠前的项目,介绍了一下,很不错: https://blog.csdn.net/yH0VLDe8VG8ep9VGe/article/details/81611 ...

  2. linux shell grep/awk/sed 匹配tab

    处理文件的命令实在是多, sed, awk, grep等.遇到了需要匹配tab的情况, 记录一下. 例子如下:找出文本中第一列是1的行. 文本a 解法1 : 直接使用正则表达式, ^表示开头, \t表 ...

  3. ISP图像处理&&相机系统

    如何理解 ISO.快门.光圈.曝光这几个概念? 摄影基础篇——彻底弄清光圈.快门与ISO 理解这三个参数各自都是如何控制进入的光线量: 快门速度一般的表示方法是1/100s.1/30s.2s: 小的“ ...

  4. iOS开发-UIRefreshControl下拉刷新

    下拉刷新一直都是第三库的天下,有的第三库甚至支持上下左右刷新,UIRefreshControl是iOS6之后支持的一个刷新控件,不过由于功能单一,样式不能自定义,因此不能满足大众的需求,用法比较简单在 ...

  5. Backbone.js 使用 Collection

    在前面我们的 Backbone.js 用上了 Model, 但绝大数的情况下我们处理的都是一批的 Model 数据列表,所以需要有一个 Collection 来容纳 Model, 就像 Java 里最 ...

  6. 解决 win7 注册com组件失败问题

    解决 win7 注册com组件失败问题 运行:regsvr32 xxx.ocx 提示:模块 "xxx.ocx" 已加载,但对调用 dllregisterserver 的调用失败,错 ...

  7. [转]0.python:scikit-learn基本用法

    感谢百小度治哥,该文原地址:here 经Edwin Chen的推荐,认识了scikit-learn这个非常强大的python机器学习工具包.这个帖子作为笔记.(其实都没有笔记的意义,因为他家文档做的太 ...

  8. mahout0.7 示例运行纪实

    http://1992mrwang.blog.51cto.com/3265935/1205282 运行太不容易了 所以要记下来以免后面忘记了 首先是数据 vim testdata.txt 第一列为Us ...

  9. Spring(十五):通过注解配置 Bean

    在ClassPath中扫描组件 1)组件扫描(component scanning):Spring能够从classpath下自动扫描,侦测和实例化具有特定注解的组件: 2)特定组件包含: --- @C ...

  10. 无脑抢标——算了吧

    第一版时,我对拍拍贷是恐惧的,缓解我的恐惧的方法,就是寻找尽可能安全的方案.然后,我就发现了这个策略:超过信用等级普通利率的标的.A标一般16,B一般18--那我就寻找大于16的A,大于18的B,C我 ...