官方英文手册>>地址
安装使用
//通过官方composer引入
$ composer requrie mpdf/mpdf
//简易用法
<?php
require_once __DIR__ . '/vendor/autoload.php';
$mpdf = new \Mpdf\Mpdf();
$mpdf->WriteHTML('<h1>Hello world!</h1>'); //写入html代码
$mpdf->Output(); //输出 pdf文档
样式问题
虽然mpdf支持绝大部分的css样式,但是还是有一些常用的样式支持的不太友好,比如 浮动 和定位
文字和一些基本的样式我不再赘述,这里主要讲一下如何实现以下几种情况
列表
通常我们在HTML中使用列表的方式无非是 ul 和 li ,但是当我们使用横排列表时,是需要使用到浮动的属性,但是浮动并不是那么友好,所以这里我建议使用表格,使用表格时注意要在tr的style加上height属性。
右浮动
在html可以随意使用向右浮动,但是在mpdf中不行, 所以我们用文本右对齐的方式或者使用pading-left来实现有浮动效果,因为大多都是生成固定大小pdf,所以也不用担心页面的自适应问题,只要我们的样式在A4纸上没有问题就可以了
图片
在mpdf中使用图片是个大问题,不能浮动,不能随意的当背景,不能定位,总之图片不能随意使用
解决方案有三种
1.使用图片水印
$mpdf->SetWatermarkImage('../images/background.jpg');
$mpdf->showWatermarkImage = true;
缺点是当pdf大于一张时,图片会在每一张pdf的同样位置显示
2.使用mpdf中提供的Image()方法,使用方式:
$mpdf->Image('files/images/frontcover.jpg', 0, 0, 210, 297, 'jpg', '', true, false);
3.使用html的方式(推荐)
使用方式,尽量把这个div放在body下面 因为mpdf相对定位比较奇怪,
当你的pdf为多张时,你的图片在第几张pdf中,就尽量把图片放在那一张的html附近并且是在body下面,调试位置时,你的top属性是相对当前pdf页面计算的,例如你的图片放在第二张pdf最上方,只需要把你的图片放在第二张html元素附近,并把style中的top值设为0就可以了
<div style="position: absolute; left:0; right: 0; top: 0; bottom: 0;">
<img src="/files/images/frontcover.jpg"
style="width: 210mm; height: 297mm; margin: 0;" />
</div>
以后有机会更新…