html 转成 PDF

ThinkPHP5.1
composer 安装 mpdf

composer require mpdf/mpdf
namespace app\index\controller;
use Mpdf\Mpdf;
use think\App;
use think\Db;

class Index extends Auth
{
	public function __construct(App $app = null){
		 parent::__construct($app);
    }
        //html生成pdf文件
    function shengchengpdf($url){
        $html = file_get_contents($url);
        $dir= request()->server('DOCUMENT_ROOT');//获取绝对路径 /www/home/
        $mpdf =  new Mpdf(['tempDir' => $dir .'/tmp','mode' => 'UTF-8',]);
        //设置pdf显示方式

        $file='/Uploads/pdf/'.date('Y-m-d').'/';
        $path=$dir.$file;
        if(!file_exists($path)){ //判断目录或文件是否存在
            mkdir($path,0777,true);//创建目录
        }
        //生成不重复名称
        $new_file_name =md5(uniqid(microtime(true),true).rand(10000,99999)) . '.pdf' ;
        $pdfname=$path.$new_file_name;
        $mpdf->WriteHTML($html);
        $type='f';
//$type='I';在线预览模式
//$type='D';下载模式
//$type='f';生成后保存到服务器
//$type='s';返回字符串,此模式下$filename会被忽视
        $a=$mpdf->Output($pdfname,$type);//保存pdf文件
        return $file.$new_file_name;
    }
//    生成多个pdf然后合并到一起
    function hecheng(){
	    $url1='html文件1';
	    $array[] = $this->shengchengpdf($url1);
	    $url2='html文件2';
	    $array[] = $this->shengchengpdf($url2);
	    $url3='html文件3';
	    $array[] = $this->shengchengpdf($url3);
//	    判断合并pdf数量
	    if(count($array)==1){
            $name= $array[0];
        }else{
	        //合并后文件目录
            $file='/Uploads/pdf/'.date('Y-m-d').'/';
            //生成不重复名称
            $new_file_name =md5(uniqid(microtime(true),true).rand(10000,99999)) . '.pdf' ;
            $name=$file.$new_file_name;
            //不支持 centos8 以上
            //centos需要安装 poppler-utils 
            // yum install poppler-utils 
            $shell='/usr/bin/pdfunite ';
            $dir= request()->server('DOCUMENT_ROOT');
            foreach ($array as $v){
                $shell.=$dir.$v.' ';
            }
            $shell.=$dir.$name;
//    pdf 合并 把1.pdf 2.pdf 合并成3.pdf
//pdfunite /www/admin/1.pdf /www/admin/2.pdf /www/admin/3.pdf 
            $bol= shell_exec($shell);
            //删除原始的pdf,只保留合并后pdf
            foreach ($array as $v){
                @unlink($dir.$v);
            }
        }
        //得到合并后的pdf路径
        echo $name;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值