页面 1 共有 2
首先向所有会员及访客致歉:本文的撰写计划早已拟就,由于最近工作较忙,没顾上写出来,今天终于唱了一出“空城计”。不过,至少可以向大家宣布:Joomla! 1.5 中文支持PDF的问题我已经解决。今天下载该版本的会员可能会发现,我制作的 Joomla! 1.5 RC1 中文版安装包达到了8MB之巨!这就是因为里面包含了实现中文PDF的字体文件。
原版的 Joomla! 1.5 RC1 无法支持中文PDF,在中文文章中一旦点击“pdf”按钮,则生成的PDF页面里面中文都是乱码(在《7步完成Joomla! 1.5 安装》这篇文章中我曾经提到过)。现在请下载本站制作的Joomla! 1.5 RC1 中文版,安装之后随便撰写一篇中文文章,然后测试其PDF功能,我相信你能看到正常的宋体中文,而且简体中文、繁体中文均可正常显示。
那么,这是如何实现的呢?这里面还有个故事。
 Joomla! 1.5 中文PDF
当初我从Joomla! 1.5 RC1 制作中文版时,只是简单地将Joomla!台湾网站翻译的简繁中文语言包添加进去,然后打包即成。然而在测试时,我发现英文页面可以生成正常的PDF文件,中文页面生成pdf后都是乱码(当然页面中的数字和英文字符还正常)。我就觉得非常纳闷,难道Joomla! 1.5 就不能支持中文PDF功能吗?
于是我在Joomla!官方论坛发了一个帖子,在CoolAcid 的帮助下,我注意到在 Joomla! 1.5 的 /language 文件夹里面还有一个目录叫作 pdf_fonts。CoolAcid 告诉我,我必须制作出对应中文的、包含所有中文字符的PDF字体,才能实现对中文的PDF支持。这个字体文件必须存放在 /language/pdf_fonts 目录内,并且需要在对应语言的 xml 文件中声明这个字体用于生成 PDF 文件。
现在方案就很清楚了:制作一个字体文件;将这个文件放到指定目录;编辑 xml 文件声明这个字体。
字体文件还不简单吗?在 windows 操作系统的 c:\windows\fonts 目录里面已经自带了400多个字体文件,难道还挑不出一个能用的吗?然而,当我打开 Joomla! 1.5 的 /language/pdf_fonts 目录,我发现我把这个问题想简单了。这个目录里面根本没有 .ttf 字体文件,而是 .z 格式的文件:
 Joomla! 1.5 的英文PDF字体
同时,在 /language/en-GB/en-GB.xml 文件中的 21 行左右,发现了如下代码:
|
<pdfFontName>vera</pdfFontName> |
可以看出,英文页面生成PDF所用的字体文件名称是“vera”,同时需要提供 vera.php 、vera.z 和 vera.ctg.z 三个文件。
老实说,这还是我第一次看 .z 作扩展名的文件。这就产生了一个新问题:我们必须寻找一种中文字体,并将它转换成 .z 和 .ctg.z 格式,同时制作对应的 .php 文件。当然了,如果有现成的文件,直接复制过来多好啊!很可惜,经过一番搜索,我没有找到现成的字体文件。
再次感谢CoolAcid ,他提供的一个在SourceForge网站论坛上讨论“Using font files?”的帖子给了我很大启发:我们可以先将 .ttf 字体文件转换成 .ufm 文件,然后由 .ufm 文件生成 .z 文件。
又经过一番搜索和思索,我找到了这个名叫 ttf2ufm 的开源工具,该工具只有两个文件:ttf2ufm.exe 和 makefontuni.php。在该工具的说明文档中,作者给出了使用方法:
|
$ ttf2ufm -a -F myfont.ttf
$ php -q makefontuni.php myfont.ttf myfont.ufm |
玩过Linux的人一看就知道,$ 符号是Unix操作系统的shell命令行提示符。这工具原来不能在 windows 平台上用阿!
我几乎又陷入了困境。过了几天,我突发奇想:既然 ttf2ufm 工具的主文件是 .exe 格式,它似乎应该可以在 windows 平台上使用。于是我打开了 winXP 的命令行模式,进入 ttf2ufm 的目录(已经提前复制了一个 stsong.ttf 字体文件进去),尝试执行了一下上面第一行命令(两个命令是两次分别执行):
|
J:\ttf2ufm>ttf2ufm -a -F stsong.ttf |
没想到竟然执行了!并且真的生成了一个 stsong.ufm 文件!
哈哈!真是柳暗花明又一村啊。
但是,在尝试执行第二个命令时,总是无法成功,一直提示“'php' 不是内部或外部命令,也不是可运行的程序或批处理文件”。这也难怪,DOS命令中根本不存在php.exe 或者 php.com 这个文件啊。
在苦闷之际,我忽然想到我正在使用 XAMPP 集成型 AMP(Apache+MySQL+php)服务器环境。是否这个集成包之中有什么可以借用的工具呢?
结果在 J:\xampp\php 这个目录中,我看到了 php.exe 文件。OK!有办法了:我把 ttf2ufm 工具目录移动到 J:\xampp\php 目录下,然后借用这里的php.exe来运行脚本。
|