THINKPHP导出PDF文件支持中文

1726

进入TP目录命令行:composer require tecnickcom/tcpdf


示例代码

namespace app\zongtai\controller;

 

use TCPDF;

 

class Pdf

{

    public function createPdf()

    {

        // 引入TCPDF库

        require_once('../vendor/tecnickcom/tcpdf/tcpdf.php');

        $pdf = new TCPDF();

        $pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);

        //$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'GB2312', false);

        $pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);

        // 设置文档信息        

        $pdf->SetCreator('ThinkPHP6');

        $pdf->SetAuthor('作者');

        $pdf->SetTitle('PDF文档');

        $pdf->SetSubject('PDF文档 Demo');

        $pdf->SetKeywords('PDF, Demo, TCPDF, PHP');

       

        $pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_RIGHT, PDF_MARGIN_TOP);

        $pdf->SetHeaderMargin(0);

        $pdf->SetFooterMargin(PDF_MARGIN_BOTTOM);

       

        $pdf->setPrintHeader(false);

        $pdf->setPrintFooter(false);

       

        $pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);

       

        $pdf->AddPage();

        //$pdf->Image('test.jpg', 10, 10, 150, 100, '', '', '', false, 300, '', false, false, 0, false, false, false);

        //此处已改为支持中文的字体

        $pdf->SetFont('droidsansfallback', '', 12);

        //$pdf->Cell(0,20,'Hello,World',0,1,'C');

       

        $pdf->Ln();

        $pdf->Ln();

        $style = array('border' => 1, 'padding' => '2', 'header_line' => true, 'color' => array(255, 255, 255), 'font' => 'cid0jp', 'font_size' => 10);

        // $pdf->write(0,'头牌');

        // $pdf->write(1,'乌黑的头发');

        $txt3='头像';

        //$txt3=iconv('GBK','utf-8','头像');

        $html='

列1列2
行2
'.$txt3.'头牌
';      

        $pdf->writeHTML($html, true, false, true, false, '');

        // $pdf->Output(root_path().'public\\filename.pdf', 'F');

        // exit;

        $pdf->Output('测试张三.pdf', 'D');

        die

    }

}


通过定位setFont可以看到插件的具体方法,在安装目录的fonts下有对应的自带字体

  • courier : Courier

  • courierb : Courier Bold

  • courierbi : Courier Bold Italic

  • courieri : Courier Italic

  • helvetica : Helvetica

  • helveticab : Helvetica Bold

  • helveticabi : Helvetica Bold Italic

  • helveticai : Helvetica Italic

  • symbol : Symbol

  • times : Times New Roman

  • timesb : Times New Roman Bold

  • timesbi : Times New Roman Bold Italic

  • timesi : Times New Roman Italic

  • zapfdingbats : Zapf Dingbats

这些都是英文的,下载中文字体

http://sourceforge.net/projects/hawebs/files/Assistance/PHP/Droid%20Sans%20Fallback%20-%20PHP.zip/download

将它解压放在droidsansfallback.php、droidsansfallback.z以及droidsansfallback.ctg.z这三个文件复制到 TCPDF\fonts 下面

同时修改配置文件tcpdf\config\tcpdf_config.php

define (‘PDF_FONT_NAME_MAIN’, ’helvetica’);

改为: define (‘PDF_FONT_NAME_MAIN’, ’stsongstdlight’);

define (‘PDF_FONT_NAME_DATA’, ’helvetica’);

改为: define (‘PDF_FONT_NAME_DATA’, ’stsongstdlight’);


执行导出测试,正常支持中文

无人货架批量大规模上架商品解决方案

架构设计之初未考虑到业务需要批量上架商品,几万个逐一生成货架商品需要耗费大量人力,而货架商品的结构数量都一样。...

物业小区无人销售智能货架方案

小区无人值守货架销售的建设方案,从三个方面阐述货架集成建设,投入使用,系统管理。...

厨余收运管理系统迭代开发,回收系统优化升级

完成基础数据开发,试运行一段时间后,在数据沉淀的基础上对数据进行挖掘,对业务处理进行优化升级。...

餐厨油脂再生资源收运回收管理系统方案

通过互联网+改变餐厨收运回收传统工作方式,移动手机助力系统提供工作效率、’管理效率,数据电子化打造收运大数据建设。...

医馆诊所管理系统

实现中医馆中诊所,理疗的业务处理,分为小程序用户端,医生端,管理端,PC管理端,PC服务台,PC医生端...

thinkphp8安装VIEW,多应用,验证码

官方THKPHP8默认只有单应用一个控制器,其他插件可按需安装,通常需要VIEW和多应用...

sqlserver中的nvarchar和varchar的区别

数据库表中nvarchar和varchar都可以用来表示字符的存储类型。...

微信接口开发返回码一览表

返回错误码对照表...

高德地图mark按类型批次显示不同的颜色

大量数据点显示在地图上,通常使用海量点的API展示,通过建立多个海量点达到按分类显示不同颜色的mark,看起来更直观...

餐厨垃圾收运小程序需要什么条件

建立一个小程序的硬件设施需要服务器,域名,若干个邮箱...