Vtiger CRM 6 导出 PDF 中文乱码解决方案

网上有很多 Vtiger CRM 5.x 导出中文 PDF 乱码的解决方案,但对于 Vtiger CRM 6 输出 PDF 中文乱码解决方案较少介绍。有网友反应使用 Vtiger 5.x 的方法有些问题,我没有试过,这里介绍我使用的一种解决方法。 Vtiger CRM 使用的是 TCPDF 输出 PDF 的解决方案,只不过版本比较老,貌似是 4.0,目前 TCPDF 最新版本为 6.0。TCPDF 中对简体中文的支持可以使用 cjp0cs 字体,也可以使用 stsongstdlight 或者 droidsansfallback 字体。具体可以下载 TCPDF 完整源文件测试 TCPDF/example/example_038.php 文件。本人对 Vtiger 代码不是很熟,按我的理解中文输出乱码无非就是 TCPDF 的相关设置问题。下面分别介绍非嵌入字体和嵌入字体的方法。

非嵌入 stsongstdlight 字体修改方案

在 Vtiger CRM 6 中已内置 stsongstdlight 字体,我们只需要引用即可。非嵌入方式需要支持 stsongstdlight (表示为 “STSongStdLight” 字体,这是Adobe Reader的默认简体中文字体)字体的 PDF 阅读器,未内置此字体的 PDF 阅读器显示就会有问题。
缺点:需要 PDF 阅读器安装字体
优点:生成的 PDF 文件小,速度快,一般就几百KB
以下两种方法可以任选一种尝试。
方法一:
在 TCPDF.php 文档中增加 stsongstdlight 字体的支持:
打开安装目录下 vtlib/Vtiger/PDF/TCPDF.php 文件
找到 function SetFont() 函数中的:

//Select a font; size given in points
     if ($size == 0) {
	$size = $this->FontSizePt;
     }

在其后面(大约是第 76 行)插入以下代码:

     //解决中文导出PDF乱码,加上内置的宋体支持Maie-2014-11-20
     $family = 'stsongstdlight';

保存,上传覆盖,导出中文乱码问题解决。

懒人点击这里下载修改好的 Vtiger 导出 PDF 中文乱码修复文件。注意不同版本文件可能不同,仅供参考。

方法二:
Vtiger 默认是使用的 freeserif 字体,我们可以把它替换成 stsongstdlight 字体:
找到 Vtiger 安装目录下 vtlib\Vtiger\PDF\inventory\HeaderViewer.php 文件,搜索其中的

$pdf->SetFont('freeserif'

或者只搜索

'freeserif'

全部替换为:

'stsongstdlight'

STSongStdLight 字体效果

嵌入 droidsansfallback 字体修改方案

为了保证生成的PDF文件在任何环境下都有同样的显示效果,在 PDF 中嵌入字体有里也是必需的。但有些字体太大(比如微软雅黑等),有些不支持 Unicode ,这里我们综合比较选用 Droid Sans Fallback 字体,原因如下:

  • 首先它是免费字体;
  • 其次它也是 Unicode 编码,支持简体繁体中文以及日文韩文等等;
  • 然后它的体积很小,不超过 5M。

Droid Sans Fallback 字体是 ttf 字体,需要转换为 TCPDF 支持的字体,虽然TCPDF 提供相应的转换工具,这里我们不再详细介绍,直接使用转换好的字体文件即可。
点击这里下载 PHP 和 TCPDF 支持的 Droid Sans Fallback 字体(sourceforge.net)
来个百度网盘备份吧: 点击这里下载 PHP 和 TCPDF 支持的 Droid Sans Fallback 字体(百度网盘)

将下载后的解压得到的下列三个文件拷贝到 Vtiger 安装目录下libraries\tcpdf\fonts\ 目录下 droidsansfallback.ctg.z droidsansfallback.php droidsansfallback.z 修改 Vtiger 文件的步骤同上类似: 找到 Vtiger 安装目录下 vtlib\Vtiger\PDF\inventory\HeaderViewer.php 文件,搜索其中的

$pdf->SetFont('freeserif'

或者只搜索

'freeserif'

全部替换为:

'droidsansfallback'

嵌入字体的缺点是文件尺寸太大。同样的文档不嵌入字体只有200 多 KB,嵌入字体后变为近 2MB,如何使用只有自己取舍了。

Droid Sans Fallback 字体效果

上述方法仅为抛砖引玉,经简单测试可用,欢迎大家提供反馈更完善的方法。

类似文章

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注