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/;但微软雅黑字体需要自己添加:
在命令窗口(windows下为dos窗口)切换到tcpdf目录的tools目录,msyh.ttf也复制到tools目录下
tools目录下窗口运行命令生成微软雅黑字体
php ./tcpdf_addfont.php -b -t msyh.ttf
在调用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怎么使用中文乱码的主要内容,如果未能解决你的问题,请参考以下文章