tp5 整合使用TCPDF 文本html转pdf

1,引入TCPDF:
在tcpdf官网下载整包
或在官网git地址里拉取composer安装。(tcpdf的composer也是找的好苦)

2,整包文件里有examples 例子文件夹 和 fonts 按需使用删除

3,tp5 vendor 文件夹下面建立文件夹Tcpdf

4,导入tcpdf

5,在TP里找到自己需要调用的地方,贴上代码~

        //Define
        $realname = $userInfo['real_name'];//作者名称
        $title = $request->param('title');//标题
        $content = $request->param('content');//内容
        $content = htmlspecialchars($content);
        $domain = $request->domain();//当前域名
        $FontStyle = 'stsongstdlight';//字体

        //引入扩展
        vendor('Tcpdf.tcpdf');

        //初始化tcpdf className = Tcpdf
        $pdf = new \Tcpdf(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);

        //设置作者,标题,文件属性
        $pdf->SetCreator($domain);//创建者:默认域名
        $pdf->SetAuthor($realname);//作者:用户名
        $pdf->SetTitle($title);//文件标题
        $pdf->SetSubject($domain.'/KNOW');//文件主题
        $pdf->SetKeywords('PDF');//文件关键字

        // 是否显示页眉
        $pdf->setPrintHeader(true);

        // 设置页眉和页脚信息
        $pdf->setHeaderData('', 30, $title, $realname.'-'.$title, array(0,64,255), array(0,64,128));
        $pdf->setFooterData(array(0,64,0), array(0,64,128));

        // 设置页眉和页脚字体
        $pdf->setHeaderFont(Array($FontStyle, '', '10'));
        $pdf->setFooterFont(Array($FontStyle, '', '8'));

        //设置文档对齐,间距,字体,图片
        $pdf->SetCreator(PDF_CREATOR);
        $pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
        $pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);

        //设置页眉页脚 边距
        $pdf->setHeaderMargin(PDF_MARGIN_HEADER);
        $pdf->setFooterMargin(PDF_MARGIN_FOOTER);

        //自动分页
        $pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
        $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
        $pdf->setFontSubsetting(true);

        //设置正文字体,大小   (stsongstdlight,网上说这个字体支持的文字更全,支持中文不乱码)
        $pdf->SetFont($FontStyle, '', 10);

        //创建页面,渲染PDF
        $pdf->AddPage();
        $pdf->writeHTML($content, true, false, true, true, '');

        //文件保存
        $savePath = ROOT_PATH .'public'.DS.'upload'.DS.'know'.DS.date('Ymd');
        if(!is_dir($savePath)) mkdir($savePath,0777,true);
        $saveName = md5(time()).'.pdf';
        $savePath .=DS.$saveName;
        //PDF输出模式 I:在浏览器中打开,D:下载,F:在服务器生成pdf ,S:只返回pdf的字符串
        $pdf->Output($savePath,'F');

        //判断是否保存成功
        if(!file_exists($savePath)) return api_return(201,'保存失败,文本转码失败');

        //Mysql 保存
        $insert = [
            'userId'=>$this->account,
            'name'=>$title,
            //  /upload\pdf\20190708\21e526c3d014a174d8a6d9cb48a5c572.pdf
            'link'=> DS.'upload'.DS.'know'.DS.date('Ymd').DS.$saveName,
            'create_time'=>time(),
            'file_type'=>'pdf'
        ];
        Db::startTrans();
        try{
            Db::name('knowledge')->insert($insert);
            Db::commit();
            $r = true;
        }catch (\Exception $e){
            Db::rollback();
            $r = false;
        }

        if($r)
        {
            return api_return(200,'操作成功');
        }else{
            return api_return(201,'操作失败');
        }

你可能感兴趣的:(php,Thinkphp)