tcpdf中文字体_pdf和tif有什么区别

tcpdf中文字体_pdf和tif有什么区别最近在做将网页内容输出成pdf文档方面的一个项目,找了好多类,php_pdflib,fpdf,HTML_topdf等等,不过最终还是发现这个好用,究其汉字处理方面发现了写一篇文章,就抄过来了,以供大家参考。 TCPDF是一个用于快速生成PDF文件的PHP5函数包。TCPDF基于FPDF进行扩展和改进。支持UTF-8,Unicode,HTML和XHTML。在基于PHP开发的Web应用中,…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

最近在做将网页内容输出成pdf文档方面的一个项目,找了好多类,php_pdflib,fpdf,HTML_topdf等等,不过最终还是发现这个好用,究其汉字处理方面发现了写一篇文章,就抄过来了,以供大家参考。

 

TCPDF 是一个用于快速生成PDF文件的PHP5函数包。TCPDF基于FPDF进行扩展和改进。支持UTF-8,Unicode,HTML和XHTML。在基于 PHP开发的Web应用中,使用它来输出PDF文件是绝佳的选择。但毕竟这款开源软件是外国人开发的,对中文的支持总不是那么尽如人意,因此我们需要对它 作进一步的增强。
首先要下载TCPDF。访问http://www.tcpdf.org ,单击导航条上的”Download”链接,即可下载到最新版本的TCPDF压缩包。因为里面包含了范例和字体,因此文件大概有10M左右。下载完后解压 它,会得到一个名为tcpdf的目录,此目录的结构大概是这样的:

 
TCPDF目录结构图  

将此目录移动到Apache的网页根目录下(假设您使用的是 Apache,并且使用80端口,如有不同请根据实际情况修改),打开浏览器,访问 http://localhost/tcpdf/ 应该就可以看到此目录下的文件和文件夹列表。由于TCPDF已经自带了一些范例,因此为了节省时间,我们可以直接对范例进行修改再使用。打开tcpdf目 录下的examples目录,下面有50多个范例文件,其中example_038.php就是用来测试东亚字体的(比如简体/繁体中文、日文等等),打 开此文件,找到$pdf->SetFont 这一行,修改为:

$pdf->SetFont(‘stsongstdlight’, ”, 20);  

这一行代码的作用是设置PDF正文所用的字体及字号。其 中”stsongstdlight”表示”STSongStdLight”字体,这是Adobe Reader的默认简体中文字体,TCPDF中已经内置这个字体的配置文件,我们只需直接调用即可。接下来,将$pdf->Cell那一段修改为:

$pdf->Cell(0, 10, ‘敏捷的棕毛狐狸跃过那只懒狗。’, ”,1, 1, ‘C’);
$pdf->Cell(0, 10, ‘The quick brown fox jumps over the lazy dog.’, ”,1, 1, ‘C’);
$pdf->Cell(0, 10, ‘1234567890’, ”,1, 1, ‘C’);  

保存,然后访问 http://localhost/tcpdf/examples/example_038.php 就可以生成一份PDF文档了:  

 
使用默认中文字体生成的PDF文件  

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

  • 支持Unicode,因为TCPDF支持的是Unicode;
  • 体积越小越好;
  • 最好是也支持繁体中文;

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

  • 首先它是免费字体;
  • 其次它也是Unicode编码,支持简体繁体中文以及日文韩文等等;
  • 然后它的体积很小,不超过5M。

然而TCPDF不支持TTF字体文件,因此我们先将它转换成TCPDF支持的格式,然后再使用。在TCPDF目录下有个fonts子目录,这个子目录下又有个utils,这里面带有一个字体转换工具ttf2ufm.exe。下面是转换的步骤:
在 网上很容易找到Droid Sans Fallback字体的下载链接,因此在这里就没有必要多做描述了。我们把下载到的 DroidSansFallback.ttf 复制到 TCPDF\fonts\utils 下面,然后打开Windows的命令行,切换到此路径下,输入如下命令: 

D:\www\tcpdf\fonts\utils>ttf2ufm -a -F DroidSansFallback.ttf 

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

“Finished – font files created” 

之后,可以发现此目录下生成了DroidSansFallback.afm,DroidSansFallback.t1a 和 DroidSansFallback.ufm 这三个文件。
在命令行中输入

“C:\Program Files\WAMP\PHP5\php.exe” -q makefont.php DroidSansFallback.ttf DroidSansFallback.ufm 

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

Font definition file generated  

至此大功告成。将生成的droidsansfallback.php、droidsansfallback.z以及droidsansfallback.ctg.z这三个文件复制到 TCPDF\fonts 下面即可。
打开example_038.php文件,将
$pdf->SetFont(‘stsongstdlight’, ”, 20);
修改为
$pdf->SetFont(‘droidsansfallback’, ”, 20);  

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

 
嵌入DroidSansFallback字体后的PDF文档 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/196165.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • [2018年新版]以太坊ETH挖矿教程

    [2018年新版]以太坊ETH挖矿教程一.准备工作1.硬件准备ETH以太坊挖矿主要是使用高端3G显存以上显卡来挖矿,因此你需要一台拥有以下设备的电脑:显卡:6张rx470或gtx1060以上显卡,显存推荐4G以上主板:需要有6个以上pci-e插槽,目前市面上有主板直插和转接板2种。一般来说直插6卡或者8卡主板较为稳定。电源:电源功率视显卡数量,一般6卡需要850w以上其他配件:CPU、内存、硬盘(推荐60G以上SSD)、延长线…

    2022年6月9日
    53
  • 花生壳安全吗_花生壳ddns怎么一直连接不上

    花生壳安全吗_花生壳ddns怎么一直连接不上dyndns和花生壳组织文化中最强大的方面以最小的个体姿态来实现,有时甚至不及花生。不久前,当我坐在达拉斯机场等待航班延误时,我看到另一个乘客在吃一些花生时感到不安。它们的贝壳掉落在地板上,几分钟后,乘客将它们踢入过道,大概是供机场清洁人员稍后收集。直到最近的一次内部RedHat活动中,有人问我有关我的宠物怒气冲冲,我才对花生壳没多加考虑。我开始考虑在RedHat浴室的地板…

    2025年6月11日
    0
  • [家里蹲大学数学杂志]第389期中国科学院大学2014-2015-1微积分期中考试试题参考解答…

    [家里蹲大学数学杂志]第389期中国科学院大学2014-2015-1微积分期中考试试题参考解答…

    2021年9月3日
    54
  • Python入门习题(40)——CCF CSP认证考试真题:报数游戏「建议收藏」

    Python入门习题(40)——CCF CSP认证考试真题:报数游戏「建议收藏」CCFCSP认证考试真题(201712-2):游戏问题描述解题思路参考答案测试用例小结问题描述试题编号: 201712-2试题名称: 游戏时间限制: 1.0s内存限制: 256.0MB问题描述  有n个小朋友围成一圈玩游戏,小朋友从1至n编号,2号小朋友坐在1号小朋友的顺时针方向,3号小朋友坐在2号小朋友的顺时针方向,……,1号小朋友坐在n号小朋友的顺时针方向。  游戏开始,从1…

    2022年9月3日
    2
  • docker离线安装mysql镜像_minio docker

    docker离线安装mysql镜像_minio dockerDocker离线(升级)安装MINIO1.查看版本登录minio网页,右上角点击About2.本地安装登录一台有网而且安装了Docker的Linux#拉取镜像dockerpullminio/minio#在当前目录生成镜像的tar包dockersave-ominio.tarminio/minio3.把包上传到服务器方式一(命令行):#scp方式上传scp[filename][user]@[ip]远程传输文件scp-r./*root@8.134.50.

    2022年9月26日
    0
  • TinyXML2使用方法及示例

    TinyXML2使用方法及示例转自https://blog.csdn.net/liang_baikai/article/details/78783839概述 TinyXML2是简单实用的开源的C++XML文件解析库,可以很方便的应用到现有的项目之中。  TinyXML2解析器相对TinyXML1在代码上是完全重写,使其更适合于游戏开发中使用。它使用更少的内存,更快,并使用更少的内存分配。说明 xml类似数据库,…

    2022年6月6日
    52

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号