原文来自零度科技
最近在做将网页内容输出成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文档
分享到:
相关推荐
为了显示非ASCII字符,如中文,TCPDF需要特定的TrueType或CIDFont字体文件。默认情况下,TCPDF仅内置了少数英文字体。 标题中的“让tcpdf也支持中文微软雅黑字体”意味着我们需要添加微软雅黑字体文件到TCPDF的字体...
在提供的压缩包 "TCpdf -> fonts 简体中文包" 中,包含了一些关键文件,用于处理简体中文的字体显示。 1. **droidsansfallback.ctg.z**:这是一个压缩的字典文件,包含了 Droid SansFallback 字体的字符映射信息。...
3. **图像插入**:除了文字,TCPDF 还允许开发者插入图像,如 JPEG、PNG、GIF、BMP 和 WMF 格式的图片。 4. **HTML 转换**:TCPDF 提供了将 HTML 代码转换为 PDF 的功能,这使得开发者可以直接利用现有的网页设计来...
TCPDF 是一个开源的 PHP 类库,用于生成 PDF 文档。...通过分析和运行这些示例代码,开发者可以更好地理解如何利用 TCPDF 进行复杂的 PDF 文档生成,包括处理中文和繁体中文字符,以及添加图形和自定义设计元素。
最新版本的 TCPDF 已经优化了对中文字符的支持,这意味着它能够正确显示和处理中文文本,解决了以往在生成中文 PDF 时常见的乱码问题。 TCPDF 的核心功能包括: 1. **PDF 创建**:通过 TCPDF,你可以创建全新的 ...
TCPDF 中文函数参数介绍 TCPDF 是一个流行的 PHP 类库,用于生成 PDF 文档。下面将对 TCPDF 中的函数参数进行详细介绍。 __construct 函数 `__construct` 函数是 TCPDF 类的构造函数,用于设置页面格式。该函数的...
在处理中文、日文、韩文等非 ASCII 字符时,TCPDF 需要支持特定的 TrueType 字体或者 Unicode 字体来正确显示这些字符。ttf2ufm 是 TCPDF 提供的一个字体转换工具,用于将 TrueType 字体(.ttf 文件)转换为 UFM...
此外,修复了文件名为中文时会过滤掉中文的Bug,这意味着TCPDF现在可以正确处理包含中文字符的文件路径,这对处理中文内容的PDF文档来说至关重要。 TCPDF的使用步骤通常包括以下几步: 1. **安装与引入**:首先,...
在IT行业中,生成PDF文档是常见的需求,尤其在web应用中,用户可能希望将HTML页面保存...在实际开发过程中,要注意处理好编码问题,确保中文字符能正常显示,并灵活运用`tcpdf`提供的各种选项,以满足不同场景的需求。
在 TCPDF 的官方版本中,中文显示不佳可能是因为默认字体不包含足够的汉字,或者字体样式不适合中文排版。为了解决这个问题,开发者可以手动添加更适合显示中文的字体资源。例如,可以引入如 SimSun(宋体)或 Arial...
例如,你可以使用"SimSun"或"Arial Unicode MS"这样的字体来确保全面的中文显示。 在创建PDF的过程中,首先需要实例化TCPDF类,并设置必要的参数,如页面方向( portrait 或 landscape)、单位(如mm)和页面大小...
2. **多语言支持**:TCPDF 支持 Unicode,可以轻松处理多种语言的文本,包括中文、日文、阿拉伯文等复杂脚本。 3. **图像处理**:它能插入多种格式的图像(如 JPEG、PNG、GIF、BMP 等),并可以调整大小、旋转、...
1. **多语言支持**:TCPDF 支持多种语言文字的排版,包括复杂的亚洲字符集如中文、日文和韩文,以及右对齐的语言如阿拉伯语和希伯来语。 2. **字体嵌入**:它可以嵌入 TrueType、OpenType、Type1 和 CID 字体,确保...
同时,TCPDF 对 UTF-8 编码有很好的支持,可以处理多种语言的文字。 6. **内容格式化** 除了基本的文本,TCPDF 还支持 HTML 标签和 CSS 样式,可以方便地创建复杂的布局。比如,你可以使用 `<img>` 标签插入图片,...
这些字体文件可以被TCPDF类库使用,以确保生成的PDF文档在没有特定字体安装的情况下也能正确显示文本。 2. **多语言支持**:TCPDF支持Unicode,这意味着它可以处理几乎所有的语言,包括中文、日文、阿拉伯文等复杂...
在HTML2PDF与TCPDF的结合使用中,我们可以利用TCPDF的强大功能来解决中文显示问题。具体步骤如下: 1. **安装和配置HTML2PDF**:首先,你需要安装HTML2PDF库。这可以通过Composer(PHP的依赖管理工具)来完成,或者...
2. 使用正确的编码头:在生成 PDF 之前,设置正确的编码头,确保 PDF 内容可以正确显示中文字符。 3. 对文件名进行 URL 编码:在生成下载链接时,需要对包含中文的文件名进行 URL 编码,以避免 URL 中的特殊字符...
2. **字体嵌入**:TCPDF 可以自动嵌入字体,确保生成的 PDF 在任何设备上都能正确显示。 3. **HTML 和 CSS 支持**:可以将 HTML 和 CSS 直接转换为 PDF,使得布局和样式设计更为灵活。 4. **图像处理**:支持 JPEG...
在选择PDF生成库时,应根据项目的需求来决定,例如,如果你的项目涉及大量中文内容,TCPDF的Unicode支持和对中文字符的良好处理能力使其成为理想的选择。而对于纯英文或简单格式的文档,其他轻量级的库可能更合适。...
1. **多语言支持**:TCPDF 支持多种语言文字,包括复杂的亚洲字符集,如中文、日文和韩文。 2. **字体嵌入**:可以嵌入任何字体,确保 PDF 在任何环境下都能正确显示。 3. **图像处理**:支持插入 JPEG、PNG、GIF、...