这种方式生成的PDF文件的优点是:文件体积小,生成快速。但也有缺点是,没有嵌入中文字体,只限于安装了Adobe Reader之后才能正常显示。那万一用户使用的是FoxIt Reader或者是Linux操作系统呢?显示效果就不一样了。因此,为了保证生成的PDF文件在任何环境下都有同样的显示效果,嵌入字体是必需的。

Windows下有很多中文字体,但是我们要用在TCPDF中的中文字体有下面几个要求:

[php] * 支持Unicode,因为TCPDF支持的是Unicode;

* 体积越小越好;

* 最好是也支持繁体中文;[/php]

这样看来,微软雅黑以及方正的一些字体都符合要求。但是他们都是商业字体,而且个头都不小,以微软雅黑为例,msyh.ttf 文件就超过10M,如果使用它,生成的PDF文件体积也会很大。

综合考虑,我觉得”Droid Sans Fallback”字体符合要求:

[php] * 首先它是免费字体;

* 其次它也是Unicode编码,支持简体繁体中文以及日文韩文等等;

* 然后它的体积很小,不超过5M。[/php]

然而TCPDF不支持TTF字体文件,因此我们先将它转换成TCPDF支持的格式,然后再使用。在TCPDF目录下有个fonts子目录,这个子目录下又有个utils,这里面带有一个字体转换工具ttf2ufm.exe。下面是转换的步骤:

在网上很容易找到Droid Sans Fallback字体的下载链接,因此在这里就没有必要多做描述了。我们把下载到的 DroidSansFallback.ttf 复制到 TCPDF\fonts\utils 下面,然后打开Windows的命令行,切换到此路径下,输入如下命令:

[php]D:\www\tcpdf\fonts\utils>ttf2ufm -a -F DroidSansFallback.ttf[/php]

等待一段时间,等到命令行窗口显示

[php]"Finished - font files created"[/php]

之后,可以发现此目录下生成了DroidSansFallback.afm,DroidSansFallback.t1a 和 DroidSansFallback.ufm 这三个文件。

在命令行中输入

[php]"C:\Program Files\WAMP\PHP5\php.exe" -q makefont.php DroidSansFallback.ttf DroidSansFallback.ufm[/php]

说明:这里的”C:\Program Files\WAMP\PHP5\php.exe”为php.exe文件所在的路径,请根据实际情况输入。回车运行之后,稍等片刻,命令行窗口中会提示

[php]Font definition file generated[/php]

至此大功告成。将生成的droidsansfallback.php、droidsansfallback.z以及droidsansfallback.ctg.z这三个文件复制到 TCPDF\fonts 下面即可。

打开example_038.php文件,将

[php]$pdf->SetFont('stsongstdlight', '', 20);[/php]

修改为

[php]$pdf->SetFont('droidsansfallback', '', 20);[/php]

这样就能够调用我们刚才生成的字体,再访问 http://localhost/tcpdf/examples/example_038.php 就可以看到重新生成的PDF文档。

php字库,TCPDF生成内置字库的PDF相关推荐

  1. DCMTK:生成内置的数据字典

    DCMTK:生成内置的数据字典 生成内置的数据字典 生成内置的数据字典 #include "dcmtk/config/osconfig.h" #include "dcmt ...

  2. oracle内部函数,Oracle内置函数大全.pdf

    WinnerSoft SQL内置函数说明 Oracle 8i数据库管理 数字格式元素 WinnerSoft 元素 示例 说明 , 999,999 标定格式化数字中的位置 G 999G999 返回一组通 ...

  3. lvgl 8 中文内置字库配置

    ①https://lvgl.io/tools/fontconverter 生成中文c文件 ②打开c文件修改如下 #ifdef LV_LVGL_H_INCLUDE_SIMPLE#include &quo ...

  4. 下面属于python内置对象的有哪些_python练习题-写一个函数,打印所有包含copy方法的内置对象...

    代码: #encoding=utf-8 for i in dir(__builtins__): #print "i:",i try: #这里的i是个字符串,并不能直接用dir(i) ...

  5. PCtoLCD2002 生成字模转换为字库 .h文件

    打开字体取模软件PCtoLCD2002.exe,选项进行如下设置: 然后在下方打入需要取的汉字,点击生成字模,生成字模,存储字模的txt文件. 使用如下python代码, 将生成字模转换为字库的.h文 ...

  6. 没有form的表单验证_PHP动态生成表单,内置17种常用组件并且支持表单验证!

    FormBuilder 是一个开源的PHP表单生成器,可以快速生成现代化的form表单.还可以配合开源项目 xaboy/form-create 生成任何 Vue 组件 github | 文档 环境需求 ...

  7. python生成50个随机数_Python内置random模块生成随机数的方法

    本文我们详细地介绍下两个模块关于生成随机序列的其他使用方法. 随机数参与的应用场景大家一定不会陌生,比如密码加盐时会在原密码上关联一串随机数,蒙特卡洛算法会通过随机数采样等等.Python内置的ran ...

  8. python产生随机数random.random_Python内置random模块生成随机数的方法

    本文我们详细地介绍下两个模块关于生成随机序列的其他使用方法. 随机数参与的应用场景大家一定不会陌生,比如密码加盐时会在原密码上关联一串随机数,蒙特卡洛算法会通过随机数采样等等.Python内置的ran ...

  9. format函数python生成列表_python 全栈开发,Day14(列表推导式,生成器表达式,内置函数)...

    一.列表生成式 生成1-100的列表 li = [] for i in range(1,101): li.append(i) print(li) 执行输出: [1,2,3...] 生成python1期 ...

  10. python中的random模块_Python内置random模块生成随机数的方法

    本文我们详细地介绍下两个模块关于生成随机序列的其他使用方法. 随机数参与的应用场景大家一定不会陌生,比如密码加盐时会在原密码上关联一串随机数,蒙特卡洛算法会通过随机数采样等等.Python内置的ran ...

最新文章

  1. 开源项目实例源码_今年我读了四个开源项目的源码,来分享下心得
  2. 百度 Java 后端三轮面试题,这些你会吗?
  3. django mysql connector,MySQL Connector / Python作为Django引擎?
  4. UDT源码剖析(四):UDT的GC线程相关过程代码注释
  5. 正确注释@return让PHPstorm动态返回类
  6. 编译wxWidgets
  7. 详解nodejs中express搭建权限管理系统
  8. 【转】Python之装饰器
  9. 解决PRINT函数UTF-8问题
  10. python怎么看待_如何看待将Python作为少儿编程的基础语言?
  11. 曼昆微观经济学+曼昆宏观经济学分册第七版笔记和课后习题详解答案
  12. Flex builder3 调试弹出窗口Flex builder cannot locate the required version of Flash Player解决办法
  13. 服务器主机防护系统有哪些,什么是DDoS防护主机?
  14. བྱ་དེ་ཁྲུང་ཁྲུང་དཀར་པོ།།--洁白的仙鹤/仓央嘉措情歌--IPA--藏语...
  15. MMC 事件查看器无法打开
  16. Map应用:电话聊天狂人
  17. 软件推荐!真正免费的思维导图软件,全在这里了!
  18. java文件 默认打开方式_修改文件的默认打开方式(亲测有效)
  19. ImageIo类常用方法以及图片操作
  20. 数据结构与算法-平衡二叉搜索树

热门文章

  1. Spring事务管理---上
  2. 值得收藏的一些Java实战项目分享
  3. 一个简单的音乐网站项目
  4. USB之基本协议和数据波形1
  5. [3-7]xp系统美化主题包下载每日更新【heizt整理】
  6. 微信小程序下载文件,后端PHP处理流程
  7. 知道是骗子 !好要撞上去!别太得瑟,没啥么好
  8. 洗头 Wet Hair
  9. (android开发http拦截)fiddler2抓包工具
  10. Fiddler2教程(Web调试工具)