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'
嵌入 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,如何使用只有自己取舍了。
上述方法仅为抛砖引玉,经简单测试可用,欢迎大家提供反馈更完善的方法。
除非注明,流浪天下 文章均为原创,转载请以链接形式注明出处。查看声明
本文链接地址: https://maie.name/604.html
订阅本站:https://maie.name/feed,打赏:https://maie.name/donation
请教下老大,vtiger在迁移的时候,直接复制到完全一样的系统环境下,为什么无法正常使用
你这说的太空洞了。迁移时建议:1)先导出数据库,再创建并导入数据库;2)复制目录;3)删除config文件;4)重新运行install.php安装;5)连接配置数据库
谢谢,我试一下
亲,问下 6.0版本 在导入cvs的时候出现乱码,这个怎么破?谢谢!
先检查浏览器浏览器字符编码是不是 utf-8,在 chrome 下导入是没有问题的;其次若打开编辑过 csv 保存后字符编码会改变;可参考 vtiger 5.4 乱码修正方法
我的6rc版本根本就无法选择产品名称,点击开后是空的,知道是什么原因吗?
不清楚
从产品出发做报价单可以,从客户出发做报价单不行,估计还是软件bug吧,中文pdf尝试了下没弄成,明后天再看看
为什么不行?你还在用 6.0RC 版?为何不升级到 Vtiger CRM 6.0 GA 版?!
我也不知道为什么不行,等等看其他人用的如何?我用的是GA版本,说错了。你可以尝试下你的软件,在客户界面右侧点报价单,这样话选不上产品和服务。至少我的现状是这样
我的木有问题,一切正常
不清楚了,难不成是我的php版本太低?安装时有报错,我没管。更麻烦的是我的安装在群晖NAS上,还不知道怎么升级(默认crm5.4的),慢慢研究了
是不是浏览器问题,已知 Vtiger 6.0 在 IE11 以下的浏览器中点击部分菜单、下拉列表会无响应,在 Webkit 内核的浏览器上一切正常。
不是浏览器问题,我的NAS默认版本还是5.4,等厂家系统升级后再折腾吧,估计是安装的时候参数问题
你的产品没有启用