php tcpdf怎么使用中文乱码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php tcpdf怎么使用中文乱码相关的知识,希望对你有一定的参考价值。

tcpdf中文解决方案


步骤如下:1.确保你测试tcpdf能正常输出英文内容的pdf2.测试输入中文内容后显示是?的乱码或者空白

分析原因,是因为我们输入的中文,tcpdf字体库并不支持,因此乱码或者空白显示


添加一个合适的字体即可

另外tcpdf的字体分为两种方式,嵌入方式和非嵌入(系统自带)嵌入就是输出的pdf会包含你的字体文件,系统自带的要求客户端必须有你指定的字体

另外下列字体不支持嵌入The fonts that could be not embedded are only the standard core fonts and CID-0 fonts.


The PDF Core (standard) fonts are:


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

找到了原因,明白了原理,ok,动手吧

3.下载支持中文字体的

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

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

4.配置

中文的解决方法为: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’);

5.将数据交给TCPDF类处理时,一定要UTF8编码,否则也会出现乱码的情况发生的。


参考技术A

// require_once("./vendor/tcpdf/tcpdf.php");

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

        // $pdf->SetAuthor('Nicola Asuni');

        // $pdf->SetTitle('TCPDF Example 002');

        // $pdf->SetSubject('TCPDF Tutorial');

        // $pdf->SetKeywords('TCPDF, PDF, example, test, guide');

        // $pdf->SetFont('stsongstdlight', '', 14, '', true);

        // // $pdf->Write(0, $txt, '', 0, 'C', true, 0, false, false, 0);

        // // $pdf->Output('pdf.pdf', 'I');


        // $pdf->AddPage();

        // $html = '<h1>test 1111</h1>';

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

        // $pdf->lastPage();


        // $pdf->Output('pdf.pdf', 'I');

        // $pdf->Output('pdf.pdf', 'I');


        // return;

不知道为什么写了两边$pdf->Output('pdf.pdf', 'I');就好使了,我自己也没弄明白具体的原因,但是现在好使了不乱码了


TCPDF微软雅黑字体

TCPDF是可以实现将html转为pdf格式的php插件,使用例子在https://tcpdf.org/examples/;但微软雅黑字体需要自己添加:

  1. 在命令窗口(windows下为dos窗口)切换到tcpdf目录的tools目录,msyh.ttf也复制到tools目录下

  2. tools目录下窗口运行命令生成微软雅黑字体

    php ./tcpdf_addfont.php -b -t msyh.ttf

  3. 在调用tcpdf代码中设置字体

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

    $pdf->SetFont(‘msyh‘, ‘‘, 10);


本文出自 “纯技术纯探讨” 博客,请务必保留此出处http://hjun169.blog.51cto.com/3600246/1966425

以上是关于php tcpdf怎么使用中文乱码的主要内容,如果未能解决你的问题,请参考以下文章

PHP导出成PDF你用哪个插件

php数组对象有中文,输出乱码怎么解决

PHP显示中文乱码

mysql 8.0 中文数据乱码怎么解决

IDEA 解决 IDEA 中文乱码问题

dompdf 中文乱码怎么处理