本站首页 返回顶部 关于博主

让WP-Advanced-PDF插件支持中文

PDF版
前几天写了篇文章《怎样把WordPress的文章生成PDF》。有网友告诉我,只需稍作修改,WP Advanced PDF也可支持中文
怀着好奇之心,我决定试试看。
安装WP Advanced PDF之后,到 设置 -> WP Advanced PDF 中,设置2个选项:Display Option 设置为 Front-End;Availability 设置为 For all visitors。
保存设置后,打开任意一篇文章,发现在文章顶部出现了 Download PDF 的图标,如下图。
点击图标,下载的文档是乱码。
 
怎么解决呢?
读了这个插件的源码,它是基于 TCPDF实现的。第一步,先要确认那么TCPDF是否支持中文。
TCPDF的代码库下载了源码, 解压到服务器根目录下的某个子目录
好在 TCPDF提供了用户友好的样例,在 examples文件夹中。第一个样例 example_001.php文件中,把代码

$pdf->SetFont('dejavusans', '', 14, '', true);

修改成

$pdf->SetFont('stsongstdlight', '', 14, '', true);

其中”stsongstdlight”表示”STSongStdLight”字体,这是Adobe Reader的默认简体中文字体,TCPDF中已经内置这个字体的配置文件,我们只需直接调用即可。
把 example_001.php 文件中的html内容加上中文字,保存。在浏览器中打开example_001.php,中文正常显示。由此可见,TCPDF可以支持中文。要 WP Advanced PDF支持中文,初步估计改动量不大。
WP Advanced PDF持中文,先保证中文存在。把 TCPDF的字体文件stsongstdlight.php 复制到WP Advanced PDF插件的字体文件夹wp-contents/uploads/fonts中。
之后,找到插件的文件libs/wpppdf-tab-general.php,定位到fonts数组中,在数组中加上一行

'STSongStd-Light-Acro' => 'stsongstdlight'

保存。然后到 wordpress 的后台 设置 -> WP Advanced PDF 中,把contenet、header、footer中的默认字体都修改成 STSongStd-Light-Acro ,保存。
这样,WP Advanced PDF插件就可以生成包含中文的PDF了。
不过,由于TCPDF是通过解析的方式静态地分析布局,鉴于布局运行时会有很大的变化,某些布局复杂的文章并不能以原格式呈现。对格式要求不高的场景,WP Advanced PDF也是一项不错的选择。



请你留言