ThinkPHP5+mpdf 实现富文本生成 PDF文件

  • 背景
	今天在进行后台文章编辑时:
	为方便文章的下载,建议在进行富文本的添加、修改时,可在规定目录下对应生成 PDF文件;
	网上搜索发现,mPDF 是一个成熟的工具,也避免再造轮子咯
	下面将应用于 ThinkPHP5 框架下的过程介绍下,方便道友借鉴
  • 操作环境
PHP版本:	7.0.12
TP框架:		ThinkPHP5.1.2
mpdf版本:	v7.0.1

①. 首先建议下载对应的版本包 【mpdf 扩展包链接

  • 以我为例,根据我的PHP版本,从版本库中找一个可支持的 mpdf 版本即可,鄙人选择的是 v7.0.1,那么对应的命令为:
composer require mpdf/mpdf v7.0.1

②. 核心方法实现

  • 举例:富文本信息为 $html_content (如果直接赋值,注意转化)
	<p style="text-align: center;">
     	<span style="color: rgb(153, 0, 0); font-size: 15px; text-align: center;">
     		<img src="/upload/20200903/191335ODA5NzgyNzMwMzAy.jpg" title="191335ODA5NzgyNzMwMzAy.jpg" alt="QQ截图20200306180410.jpg"/>
     		</span>
	</p>
	<p style="text-align: center;">
    	<span style="color: rgb(153, 0, 0); font-size: 15px; text-align: center;">余生很贵,经不起浪费</span>
	</p>
	<p style="text-align: center;">
    	<img src="http://img.baidu.com/hi/jx2/j_0034.gif"/>
    	<img src="http://img.baidu.com/hi/jx2/j_0040.gif"/>
	</p>
  • 那么测试处理的核心代码如下:
		    $mpdf = new Mpdf(['mode'=>'utf-8','format' => 'A4',]);
            $mpdf->SetDisplayMode('fullpage');
            //自动分析录入内容字体
            $mpdf->autoScriptToLang = true;
            $mpdf->autoLangToFont = true;
            // 自定义文章pdf文件存储路径
            $fileUrl = "upload/article_files/article_".$id.".pdf";
            //默认 以html为标准分析写入内容
            $mpdf->WriteHTML($html_content);
            // 文件生成指令
            $mpdf->Output($fileUrl);

③. 对于 Linux/Nginx 环境下,需要更改 mpdf 目录下的写权限 (“src/”、“tmp/”、“ttfonts/”)
为了方便,鄙人直接使用了如下命令:

 chmod -R 777 vendor/mpdf

  • 如果没有做处理,很有可能出现如下的报错:
Temporary files directory 
"/xxxxxxxxxxxxxxxxx/vendor/mpdf/mpdf/src/Config/../../tmp" 
is not writable

④. 实现效果如下:

附录

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值