`
bsdgo
  • 浏览: 35545 次
社区版块
存档分类
最新评论

tcpdf 显示汉字

阅读更多
原文来自零度科技
最近在做将网页内容输出成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目录结构图
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文件  

这种方式生成的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文档
嵌入DroidSansFallback字体后的PDF文档 


分享到:
评论

相关推荐

    让tcpdf也支持中文微软雅黑字体

    为了显示非ASCII字符,如中文,TCPDF需要特定的TrueType或CIDFont字体文件。默认情况下,TCPDF仅内置了少数英文字体。 标题中的“让tcpdf也支持中文微软雅黑字体”意味着我们需要添加微软雅黑字体文件到TCPDF的字体...

    TCpdf -> fonts 简体中文包

    在提供的压缩包 "TCpdf -> fonts 简体中文包" 中,包含了一些关键文件,用于处理简体中文的字体显示。 1. **droidsansfallback.ctg.z**:这是一个压缩的字典文件,包含了 Droid SansFallback 字体的字符映射信息。...

    tcpdf最新版本 6.2

    3. **图像插入**:除了文字,TCPDF 还允许开发者插入图像,如 JPEG、PNG、GIF、BMP 和 WMF 格式的图片。 4. **HTML 转换**:TCPDF 提供了将 HTML 代码转换为 PDF 的功能,这使得开发者可以直接利用现有的网页设计来...

    tcpdf例子代码.rar

    TCPDF 是一个开源的 PHP 类库,用于生成 PDF 文档。...通过分析和运行这些示例代码,开发者可以更好地理解如何利用 TCPDF 进行复杂的 PDF 文档生成,包括处理中文和繁体中文字符,以及添加图形和自定义设计元素。

    php tcpdf类文件

    最新版本的 TCPDF 已经优化了对中文字符的支持,这意味着它能够正确显示和处理中文文本,解决了以往在生成中文 PDF 时常见的乱码问题。 TCPDF 的核心功能包括: 1. **PDF 创建**:通过 TCPDF,你可以创建全新的 ...

    tcpdf中文函数参数介绍

    TCPDF 中文函数参数介绍 TCPDF 是一个流行的 PHP 类库,用于生成 PDF 文档。下面将对 TCPDF 中的函数参数进行详细介绍。 __construct 函数 `__construct` 函数是 TCPDF 类的构造函数,用于设置页面格式。该函数的...

    tcpdf 生成字体工具 ttf2ufm

    在处理中文、日文、韩文等非 ASCII 字符时,TCPDF 需要支持特定的 TrueType 字体或者 Unicode 字体来正确显示这些字符。ttf2ufm 是 TCPDF 提供的一个字体转换工具,用于将 TrueType 字体(.ttf 文件)转换为 UFM...

    用于PHP生成PDF的类库(TCPDF)

    此外,修复了文件名为中文时会过滤掉中文的Bug,这意味着TCPDF现在可以正确处理包含中文字符的文件路径,这对处理中文内容的PDF文档来说至关重要。 TCPDF的使用步骤通常包括以下几步: 1. **安装与引入**:首先,...

    tcpdf HTML生成pdf

    在IT行业中,生成PDF文档是常见的需求,尤其在web应用中,用户可能希望将HTML页面保存...在实际开发过程中,要注意处理好编码问题,确保中文字符能正常显示,并灵活运用`tcpdf`提供的各种选项,以满足不同场景的需求。

    Tcpdf v6.3.2可完美支持漂亮的中文

    在 TCPDF 的官方版本中,中文显示不佳可能是因为默认字体不包含足够的汉字,或者字体样式不适合中文排版。为了解决这个问题,开发者可以手动添加更适合显示中文的字体资源。例如,可以引入如 SimSun(宋体)或 Arial...

    TCPDF使用版

    例如,你可以使用"SimSun"或"Arial Unicode MS"这样的字体来确保全面的中文显示。 在创建PDF的过程中,首先需要实例化TCPDF类,并设置必要的参数,如页面方向( portrait 或 landscape)、单位(如mm)和页面大小...

    TCPDF6.1.3 (2).zip

    2. **多语言支持**:TCPDF 支持 Unicode,可以轻松处理多种语言的文本,包括中文、日文、阿拉伯文等复杂脚本。 3. **图像处理**:它能插入多种格式的图像(如 JPEG、PNG、GIF、BMP 等),并可以调整大小、旋转、...

    tcpdf for linux

    1. **多语言支持**:TCPDF 支持多种语言文字的排版,包括复杂的亚洲字符集如中文、日文和韩文,以及右对齐的语言如阿拉伯语和希伯来语。 2. **字体嵌入**:它可以嵌入 TrueType、OpenType、Type1 和 CID 字体,确保...

    php中pdf生成类TCPDF.zip

    同时,TCPDF 对 UTF-8 编码有很好的支持,可以处理多种语言的文字。 6. **内容格式化** 除了基本的文本,TCPDF 还支持 HTML 标签和 CSS 样式,可以方便地创建复杂的布局。比如,你可以使用 `<img>` 标签插入图片,...

    PHP PDF 类和示例 tcpdf.最新、全面附件2/2

    这些字体文件可以被TCPDF类库使用,以确保生成的PDF文档在没有特定字体安装的情况下也能正确显示文本。 2. **多语言支持**:TCPDF支持Unicode,这意味着它可以处理几乎所有的语言,包括中文、日文、阿拉伯文等复杂...

    html2pdf支持图片及中文

    在HTML2PDF与TCPDF的结合使用中,我们可以利用TCPDF的强大功能来解决中文显示问题。具体步骤如下: 1. **安装和配置HTML2PDF**:首先,你需要安装HTML2PDF库。这可以通过Composer(PHP的依赖管理工具)来完成,或者...

    tecnickcom.zip

    2. 使用正确的编码头:在生成 PDF 之前,设置正确的编码头,确保 PDF 内容可以正确显示中文字符。 3. 对文件名进行 URL 编码:在生成下载链接时,需要对包含中文的文件名进行 URL 编码,以避免 URL 中的特殊字符...

    php代码-tcpdf

    2. **字体嵌入**:TCPDF 可以自动嵌入字体,确保生成的 PDF 在任何设备上都能正确显示。 3. **HTML 和 CSS 支持**:可以将 HTML 和 CSS 直接转换为 PDF,使得布局和样式设计更为灵活。 4. **图像处理**:支持 JPEG...

    PHP中使用TCPDF生成PDF文档实例

    在选择PDF生成库时,应根据项目的需求来决定,例如,如果你的项目涉及大量中文内容,TCPDF的Unicode支持和对中文字符的良好处理能力使其成为理想的选择。而对于纯英文或简单格式的文档,其他轻量级的库可能更合适。...

    基于PHP的用于快速生成PDF文件的PHP5函数包 TCPDF 英文免费版.zip

    1. **多语言支持**:TCPDF 支持多种语言文字,包括复杂的亚洲字符集,如中文、日文和韩文。 2. **字体嵌入**:可以嵌入任何字体,确保 PDF 在任何环境下都能正确显示。 3. **图像处理**:支持插入 JPEG、PNG、GIF、...

Global site tag (gtag.js) - Google Analytics