php+tcpdf生成pdf:中文乱码

这篇具有很好参考价值的文章主要介绍了php+tcpdf生成pdf:中文乱码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

亲测成功,感谢分享! 查看原文

TCPDF是一个生成PDF的不错的库,可惜,官方对包括中文在内的东亚字体支持不怎么样的。
场景:某项目需要根据数据库信息生成pdf格式的发票,考虑采用稳定的tcpdf,虽然还有许多其它选择,但是这个应该是首选,不说原因了。
可是发现一个事儿:当发票上有中文信息时,乱码,显示为问号。
谷歌了一通,略有所获。
TCPDF未采用ttf等通用的自提标准,而是采用的特别的字体格式,谷歌中有到处被复制的文章说应该用支持中文的Droid Sans,还言之凿凿的说tcpdf下的fonts文件夹下有个utils目录,那下面有个ttf2num.exe,可能,在老版本的tcpdf中有这个东西,但是我下载到的6.0.X版本里是没有这东西的

不过历尽千难万险,还是将Droid Sans转换为TCPDF可以接受的字体格式了(下载转换好的字体:http://pan.baidu.com/s/1bnq21Ld )。
tcpdf主文件采用的是ASCII编码,别自作主张给换成UTF-8格式。
传递给tcpdf的数据也不应该是utf-8格式的,否则,中文会出错。

将下载后的上面的字体压缩包解压,得到三个文件:droidsansfallback.php、droidsansfallback.z和droidsansfallback.ctg.z,将这三个文件复制到tcpdf/fonts目录下。

#亲测,这行不需要
除了以上几个要点外,还需要在tcpdf/config/tcpdf_config.php添加:
require_once(dirname(FILE).‘/…/examples/lang/chi.php’);

修改这个文件中的两个常量的定义值为:
define (‘PDF_FONT_NAME_MAIN’, ‘droidsansfallback’);
define (‘PDF_FONT_NAME_DATA’, ‘droidsansfallback’);
OK,它已经可以支持输出含有中文的pdf文档了!文章来源地址https://www.toymoban.com/news/detail-702340.html

到了这里,关于php+tcpdf生成pdf:中文乱码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Qt5项目拆解第一集解决:中文乱码| 全局字体|注册表|QSS/CSS

    # 一、乱码解决代码片段 QTextCodec是Qt中用于处理文本编码和字符集转换的类。它提供了一系列静态函数来实现不同编码的文本转换,包括编码转换、字符集检测和转换、以及数据流中的文本编码处理。QTextCodec类使得Qt可以在不同的编码和字符集之间进行无缝转换,从而方便地

    2024年01月21日
    浏览(64)
  • unity添加中文字体

    1.随便打开一个unity工程 2.将字体文件拖至project目录下 3.点击Window-TextMeshPro-Font Asset Creator 4.将中文文件(*.txt)拖至Project路径下 5.修改设置如下 6.点击Generate Font Atlas开始生成

    2024年03月22日
    浏览(68)
  • CentOS中安装中文字体

    在CentOS上安装宋体字体的过程可能因为不同版本而有所差异。以下是一种常见的安装宋体字体的方法: 1.下载SimSun.ttf 宋体字体文件并把对应字体的的ttf文件拷到/usr/share/fonts/的目录下如:     /usr/share/fonts/chinese/SimSun.ttf 2.安装宋体字体: cd /usr/share/fonts/chinese/     //进入字

    2024年02月07日
    浏览(60)
  • Unity TextMeshPro使用中文字体

      TextMeshPro是Unity新一代字体,是 Unity 的最终文本解决方案。它是 Unity UI Text 和旧版 Text Mesh 的完美替代方案。功能强大、易于使用、性能高效。目前TextMeshPro对中文的支持也还可以,不过默认不能用,需要自己成生成。    本文就介绍TextMeshPro中文字体文件的生成方法,并

    2024年02月08日
    浏览(62)
  • docker Dockerfile增加中文字体支持

    很多时候在部署应用时候,因docker没有中文字体支持,导致中文乱码问题,需要在构建Docker镜像时候增加中文字体支持 1、下载中文字体ttl文件点击下载 2、将中文字体文件上传到同需要构建的文件放在同一目录 3、编写Dockerfie配置安装中文字体

    2024年02月04日
    浏览(52)
  • Ubuntu下让matplotlib显示中文字体

    参考文章: https://zodiac911.github.io/blog/matplotlib-chinese.html Ubuntu下python的matplotlib库显示中文字体很不方便,本文快速解决这个问题。 Ubuntu的字体目录在 /usr/share/fonts 下,自带的中文字体很烂,先安装一下中文字体库。 终端输入: 你会发现在 /usr/share/fonts/MyFonts 下添加了很多新字

    2024年02月07日
    浏览(73)
  • 树莓派系统汉化教程(汉语+中文字体库+中文输入法pinyin(拼音))

    1.在putty登录树莓派,在命令行输入sudo nano raspi-config,然后回车如下图: 2.选择 5 Localisation Options Configure language and regional settings,并回车 结果如下图: 因为Timezone(时区)/keyboard(键盘)/WLAN country (wifi国家),用官方的烧录器烧录时已经设置好了,不会设置的可以参考上一

    2024年02月07日
    浏览(61)
  • Python的Matplotlib 设置中文字体,字号

      生成需要绘图的数据:  设定曲线的标签、横纵坐标、横纵轴名称、图例。 其中的“size = 12”、“fontsize=12”是指12像素,在mpl中,默认单位是像素,而word中的字号单位是磅。1磅=4/3像素,所以size=12对应的是小五号字(9磅)。    

    2024年02月02日
    浏览(66)
  • Unity [TextMeshPRO]动态字体显示中文

    我们知道Unity的Text组件在新版本中已经标记为legacy,TextMeshPRO因为有着更加出色的效果被Unity官方奉为主流。 言归正传,如果我们想要用TextMeshPRO]显示中文应该这么处理呢? 首先,我们肯定要导入一份中文字体 因为静态字体的文章较多,这里不再赘述 然后我们在字体上右键

    2024年02月12日
    浏览(65)
  • Unity TextMesh Pro创建中文字体资源

    最近将Unity升级到了2021.3.22,发现Unity UI已经完全使用TextMesh Pro替代了原来的Text组件,测试了下,发现自带的两种字体资源都不支持中文,中文字自动变成了小方块,如下图: 查了下资料,需要自己创建中文字体资源,网上有人说在Project窗口右键—Create—TextMeshPro—Font Asse

    2024年02月05日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包