Fix Magento Chinese PDF Wrong Charset

解决Magento中文订单PDF 输出乱码

这个BUG 是Magento本地化程度尚欠的一点体现。

这是由于 Magento 的 PDF 的字体是英文字体,并不支持中文,所以产生的 PDF 里中文无法显示,只显示为一个“口”。

可以通过重写Magento 的生成PDF 的核心代码,把字体修改为中文字体来实现修正。由此须准备一个 TTF 字体,如下,将标宋字体放在了$site_dir/media/fonts/STSONG.TTF,把 app/code/core/Mage/Sales/Model/Order/Pdf/Abstract.php 建一个副本到 app/code/local/Mage/Sales/Model/Order/Pdf/Abstract.php,然后大约在561 行:

protected function _setFontRegular($object, $size = 7)
{
$font = Zend_Pdf_Font::fontWithPath(Mage::getBaseDir() . ‘/media/fon
ts/STSONG.TTF’);
$object->setFont($font, $size);
return $font;
}

protected function _setFontBold($object, $size = 7)
{
$font = Zend_Pdf_Font::fontWithPath(Mage::getBaseDir() . ‘/media/fon
ts/STSONG.TTF’);
$object->setFont($font, $size);
return $font;
}

protected function _setFontItalic($object, $size = 7)
{
$font = Zend_Pdf_Font::fontWithPath(Mage::getBaseDir() . ‘/media/fon
ts/STSONG.TTF’);
$object->setFont($font, $size);
return $font;
}