官网URL:http://www.mpdf1.com/mpdf/index.php
github:https://github.com/mpdf/mpdf
官方开发手册,英文的:http://www.mpdfonline.com/repos/mpdfmanual.pdf
网页版 https://mpdf.github.io/
要求
mPDF 7.0 requires PHP ^5.6 || ~7.0.0 || ~7.1.0 || ~7.2.0. PHP mbstring和gd扩展必须加载。
对于某些高级功能,可能需要其他扩展,例如用于压缩输出的zlib和用于生成条形码的bcmath或用于字符集转换和SVG处理的xml等嵌入式资源。
mPDF在使用单线程服务器(如php-s)获取外部HTTP资源时遇到一些问题。推荐使用适当的服务器,如nginx(php-fpm)或Apache。
Support us
Consider supporting development of mPDF with a donation of any value. Donation button can be found on the main page of the documentation.
安装
官方安装方法是通过composer and its packagist package mpdf/mpdf.
composer require mpdf/mpdf
使用
库的最简单的用法(从版本7.0开始)如下:
require_once __DIR__ . '/vendor/autoload.php';
$mpdf = new \Mpdf\Mpdf();
$mpdf->WriteHTML('<h1>Hello world!</h1>');
$mpdf->Output();
这将输出PDF作为应用程序/ PDF内容类型的PDF内联类型。
设置和配置
所有配置指令都可以通过构造函数的$ config参数来设置。
建议通过tempDir配置变量设置自己的临时目录。对于使用mPDF(通常为cli,webserver,fpm)的用户,该目录必须具有写权限(建议使用775模式)。
$mpdf = new \Mpdf\Mpdf(['tempDir' => __DIR__ . '/tmp']);
默认情况下,临时目录将位于vendor目录中,并且将具有来自post_install作曲家脚本的正确权限。
有关自定义临时目录的更多信息,请参阅手册中“安装和设置”一节中有关“临时文件的文件夹”的说明。
laravel的另一种安装方法
在composer.json加上
"autoload": {
"classmap": [
"database",
"app/Libarary/mpdf"//加上
],
"psr-4": {
"App\\": "app/"
},
"files": [
"app/Tools.php",
"app/WeiXin.php"
]
},
吧mpdf放在目录 app/Libarary/下,我的版本是php5.6,so
在网站根目录运行
composer dumpautoload
实例demo
注意:mpdf对复杂的table布局,基本可以完全兼容,简单的div+css也可以,但是建议table
use mPDF; //引入
$mpdf = new mPDF('utf-8', 'A4', 16, '', 10, 10, 15, 1);
$mpdf->SetDisplayMode('fullpage');
$mpdf->autoScriptToLang = true;//加上这两行,才正常输出中文。!!!
$mpdf->autoLangToFont = true;//加上这两行,才正常输出中文。!!!
//$stylesheet = file_get_contents('mpdfstyletables.css');
//$mpdf->WriteHTML($stylesheet,1); // The parameter 1 tells that this is css/style only and no body/html/text
$file = 'images/seal/150.png';
// $mpdf->WriteHTML($contract_content, 2);
$mpdf->WriteHTML($html, 2);
$mpdf->Image($file, 140, 200); //追加盖章图片,貌似可以获取远程的,非必要请使用服务器本地的,以前tcpdf就是无法获取远程的,mpdf未测试远程图片
$mpdf->Output('mpdf.pdf', 'I'); //D是下载
下面有pdf实际效果,文件在100-200K,比较小,有盖章图片会大一点,请注意网页定义的像素和pdf显示效果有差异,建议生成之后打印看实际效果
需要注意的是,这个页面是找前端先把页面直接table布局先写出来,在慢慢调整出来,在ueditor上效果基本一样,可以随时修改文件,但是不能自由编辑,因为是table布局,如果不小心把布局删除了,就会变形
虽然不是特别自由,但是可以满足业务人员,自由修改文字,变更合同
解决php7兼容问题
Deprecated: Methods with the same name as their class will not be constructor
原因是php7不在支持同名构造函数了。
解决问题的办法比较简单,吧同名构造函数 __construct就可以
demo中报错的地方需要修改四个地方,问题都是一样的
mpdf/mpdf.php
mpdf/classes/grad
mpdf/classes/mpdfform
mpdf/classes/cssmgr
问题就解决了,如果还有类似,找到对应文件就可以
$mpdf = new mPDF('utf-8', 'A4', 16, '', 10, 10, 15, 1);
die;
看具体报什么错误
函数使用和说明
注意: 在目录下面有个examples,有很多例子可以使用
不明白为什么函数没写变量注释
$mpdf = new mPDF($mode='',$format='A4',$default_font_size=0,$default_font='',$mgl=15,$mgr=15,$mgt=16,$mgb=16,$mgh=9,$mgf=9, $orientation='P');