Joomla/Joomla! 1.5生成中文PDF的解决方案:修订间差异
(→参考来源) |
|||
第57行: | 第57行: | ||
http://www.joomlagate.com/article/joomla15-tutorial/how-to-generate-pdf-for-chinese-article-in-joomla15/ | http://www.joomlagate.com/article/joomla15-tutorial/how-to-generate-pdf-for-chinese-article-in-joomla15/ | ||
{{Joomla}} | {{Joomla 1.5}} | ||
[[category:Joomla|J]] | [[category:Joomla|J]] |
2011年3月4日 (五) 16:34的最新版本
原版的 Joomla! 1.5 RC1 无法支持中文PDF,在中文文章中一旦点击“pdf”按钮,则生成的PDF页面里面中文都是乱码。本条目就来阐述一下Joomla! 1.5生成中文PDF的解决方案。
解决方案[编辑 | 编辑源代码]
在 Joomla! 1.5 的 /language 文件夹里面还有一个目录叫作 pdf_fonts。必须制作出对应中文的、包含所有中文字符的PDF字体,才能实现对中文的PDF支持。这个字体文件必须存放在 /language/pdf_fonts 目录内,并且需要在对应语言的 xml 文件中声明这个字体用于生成 PDF 文件。现在方案就很清楚了:制作一个字体文件;将这个文件放到指定目录;编辑 xml 文件声明这个字体。
字体文件还不简单吗?在 windows 操作系统的 c:\windows\fonts 目录里面已经自带了400多个字体文件,难道还挑不出一个能用的吗?然而,当打开 Joomla! 1.5 的 /language/pdf_fonts 目录,我发现我把这个问题想简单了。这个目录里面根本没有 .ttf 字体文件,而是 .z 格式的文件:
同时,在 /language/en-GB/en-GB.xml 文件中的 21 行左右,发现了如下代码:
<pdfFontName>vera</pdfFontName>
可以看出,英文页面生成PDF所用的字体文件名称是“vera”,同时需要提供 vera.php 、vera.z 和 vera.ctg.z 三个文件。
具体过程[编辑 | 编辑源代码]
字体源的选择[编辑 | 编辑源代码]
考虑到.ufm文件必须由unicode字体文件产生,挑选了 c:\windows\fonts 目录里面的 stsong.ttf 文件(华文宋体),如果你没有这个字体,可以在网上下载到。之所以没有选用“宋体”,是因为“宋体”所对应的字体文件为 simsun.ttc,不是 .ttf 格式。
生成.ufm文件[编辑 | 编辑源代码]
在 J:\xampp\php 中创建新目录 ttf2ufm,将 ttf2ufm 工具的两个文件复制进去。然后将 c:\windows\fonts\stsong.ttf 文件复制进去。运行 winXP 的命令行模式,进入到J:\xampp\php\ttf2ufm 目录,输入以下命令:
J:\xampp\php\ttf2ufm>ttf2ufm -a -F stsong.ttf
算机开始生成 .ufm 文件,这个过程比较漫长,要耐心等待。屏幕显示如下图所示:
大约经过3分钟时间,会提示:
FontName STSong No Kerning data No Kerning data Finished - font files created
这表示转换完成。这时会发现 J:\xampp\php\ttf2ufm 文件夹中多出了3个文件,分别是 stsong.afm 、stsong.t1a 和 stsong.ufm,如下图所示:
生成.z字体文件[编辑 | 编辑源代码]
现在该用到php.exe这个命令了。由于该文件位于 J:\xampp\php\ttf2ufm 上一层目录,所以我们在命令行模式下执行下面的命令:
J:\xampp\php\ttf2ufm>..\php -q makefontuni.php stsong.ttf stsong.ufm
这个命令开头的两个点(..)表示当前目录的上级目录。输入这个命令并回车之后,电脑似乎没有任何反应,大约15秒钟之后,提示“字体文件压缩成功”:
这时可以看到在 J:\xampp\php\ttf2ufm 文件夹中又多出了3个文件:stsong.php 、stsong.z 和 stsong.ctg.z ,正是我们所需要的!如下图所示:
测试PDF效果[编辑 | 编辑源代码]
将刚才得到的 stsong.php 、stsong.z 和 stsong.ctg.z 三个文件复制到 Joomla! 1.5 的 /language/pdf_fonts 目录里,然后编辑 /language/zh-CN/zh-CN.xml 文件,将20行左右的PDF字体声明代码修改为:
<pdfFontName>stsong</pdfFontName>
请注意:当打开 /language/zh-CN/zh-CN.xml 文件后会发现原来所设置的PDF字体文件竟然跟英文一样,也是 vera!很明显vera字体不支持中文字符,因此这才是中文PDF出现乱码的根源。
按照上述方法修改 /language/zh-CN/zh-CN.xml 文件后保存,然后测试 Joomla! 1.5,在前台中文页面上点击“PDF”按钮,会看到终于输出了正常的中文页面!