Magento打印(配送单、退款单、发票)时PDF中的乱码问题

我使用Magento1.4.2,在其自带的TTF文件不能很好地解析中文字符,TTF文件的位置在网站根目录下的/lib/LinLibertineFont/中。打印的中文字符都是这样的

Magento打印(配送单、退款单、发票)时PDF中的乱码问题

解决方法:

1.在Windows下复制一个MSYHBD.TTF(微软雅黑)至网站根目录下的/lib/LinLibertineFont/中

2.修改app\code\core\Mage\Sales\Model\Order\Pdf\Abstract.php

  1. protected function _setFontRegular($object, $size = 7)
  2. {
  3. //$font = Zend_Pdf_Font::fontWithPath(Mage::getBaseDir() . '/lib/LinLibertineFont/LinLibertineC_Re-2.8.0.ttf');注释掉这行
  4. $font = Zend_Pdf_Font::fontWithPath(Mage::getBaseDir() . '/lib/LinLibertineFont/MSYHBD.TTF');
  5. $object->setFont($font, $size);
  6. return $font;
  7. }
  8. protected function _setFontBold($object, $size = 7)
  9. {
  10. // $font = Zend_Pdf_Font::fontWithPath(Mage::getBaseDir() . '/lib/LinLibertineFont/LinLibertine_Bd-2.8.1.ttf');注释掉这行
  11. $font = Zend_Pdf_Font::fontWithPath(Mage::getBaseDir() . '/lib/LinLibertineFont/MSYHBD.TTF');
  12. $object->setFont($font, $size);
  13. return $font;
  14. }
  15. protected function _setFontItalic($object, $size = 7)
  16. {
  17. //$font = Zend_Pdf_Font::fontWithPath(Mage::getBaseDir() . '/lib/LinLibertineFont/LinLibertine_It-2.8.2.ttf');注释掉这行
  18. $font = Zend_Pdf_Font::fontWithPath(Mage::getBaseDir() . '/lib/LinLibertineFont/MSYHBD.TTF');
  19. $object->setFont($font, $size);
  20. return $font;
  21. }

注:这里主要是讲解解决方法,实际修改请将上述方法写成插件的形式,不要破坏Magento的产品代码。

原文:http://blog.csdn.net/liangpei2008/article/details/7574694

上一篇:201521123073 《Java程序设计》第12周学习总结


下一篇:(转)Git Gui for Windows的建库、克隆(clone)、上传(push)、下载(pull)、合并