使用mpdf生成pdf文件

19 篇文章 0 订阅

本文主要需求是将html页面转换为pdf文档

1、安装mpdf工具类 (composer方式)

composer require mpdf/mpdf:8.0.3

2、控制器里调用

<?php

/**
  * 生产pdf 方法一
  *
  */
public function create_pdf(){
     //$mpdf = new \Mpdf\Mpdf();
     
    $mpdf = new \Mpdf\Mpdf([
    'mode' => 'UTF-8', 'format' => 'A4', 'default_font_size' => 40, 'default_font' => '', 'margin_left' => 20, 'margin_right' => 20
  ]);
    $mpdf->autoScriptToLang = true;//支持中文设置 
    $mpdf->autoLangToFont = true;//支持中文设置 
    $mpdf->WriteHTML('<h1>你好啊,世界!hello word</h1><p style="color: blue;fontsize:14px;">http://www.baidu.com</p>');
    $path = FILE_UPLOAD.date('YmdHis').'_'.mt_rand(1,5).'.pdf';         
    $mpdf->Output();//直接在页面显示pdf页面内容 
    //$mpdf->Output($path,'f');//保存pdf文件到指定目录  
} 

  /**
   * 生产pdf 方法二
   *
   */
  public function createFileToPdf($data){
     $ext = "pdf";
     $filename = microtime(true) . '.' . $ext;
     $filepath = $this->createSavePath('supervise');  //根据年月日创建目录
     $full_name = BASEPATH . $filepath . $filename;  //文件完整路径

     //实例化mpdf
     $mpdf = new Mpdf();

     //设置字体,解决中文乱码
     $mpdf->autoLangToFont = true;
     $mpdf->autoScriptToLang = true;
     
     $html = <<<HTML
    <style>
            p {
                text-align: center;
            }
            
        </style>
        <p style="text-align: center;font-size: 24px;">协助单{$data['date']}</p>
        <p>协助单位:{$data['depart_name']}</p>
        <p><a href="{$data['license_plate_img']}" > <img height="150" src="{$data['license_plate_img']}" alt="" srcset=""></a></p>
        
        <p>{$data['require_text']}</p>
    HTML;
      $mpdf->WriteHTML($html);
     // $res =  $mpdf->Output($full_name,'S');  //输出文件流
     $mpdf->Output($full_name);
     $res_data = [
         'path' => $full_name,
         'url' => 'https://' .WEB_IP. $filepath . $filename,
         'file_name' => $filename,
     ];
     return $res_data;
   }
    
   /**
     * 创建目录
     * @param $dir   目录名称
     * @return bool
     */
    protected function createSavePath($dir)
    {
        //$upload_path = $this->config['EXPORT_PATH'];  //上传路径
        $export_path = "/export_file/";
        $filepath = $export_path . $dir . '/' . date('Ymd') . '/';
        if (!file_exists(BASEPATH . $filepath)) {
            mkdir(BASEPATH . $filepath, 0777, true);
        }
        return $filepath;
    }

?>

注:这里PDF插入图片  图片需要正常访问,已经生成pdf 后,该图片与PDF中的图片已经不存在关联了,所以生成pdf 后,原图片如果被删除了,不影响PDF文件中图片的正常显示!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值