Magento PDF发票,支持中文,以及修改的办法
今天给大家讲一下我遇到的问题,顺便说下如果让magento的PDF发票支持中文.
Magento生成PDF发票.使用的是zend framework的zend_pdf类.
下面是一个简单的,使用zend framework生成pdf文件的用法.
<?php ... // 创建一个新的PDF文档. $pdf1 = new Zend_Pdf(); // 加载一个现有的PDF文件. $pdf2 = Zend_Pdf::load($fileName); // 从字符串加载并生成PDF文件. $pdf3 = Zend_Pdf::parse($pdfString);
okay..非常简单吧..
我们先来看如果让magento的PDF支持中文.
首先,我们要明白.Magento为什么不支持中文.. 其实zendcart还有joomla都存在这个问题.
是因为这些程序中,使用的文字库并不支持中文.so,我们只需要替换掉就可以了.
此类文件在这里:app/code/core/Mage/Sales/Model/Order/Pdf/Abstract.php
找到如下的代码:
protected function _setFontRegular($object, $size = 7) { $font = Zend_Pdf_Font::fontWithPath(Mage::getBaseDir() . '/lib/LinLibertineFont/LinLibertineC_Re-2.8.0.ttf'); $object->setFont($font, $size); return $font; } protected function _setFontBold($object, $size = 7) { $font = Zend_Pdf_Font::fontWithPath(Mage::getBaseDir() . '/lib/LinLibertineFont/LinLibertine_Bd-2.8.1.ttf'); $object->setFont($font, $size); return $font; } protected function _setFontItalic($object, $size = 7) { $font = Zend_Pdf_Font::fontWithPath(Mage::getBaseDir() . '/lib/LinLibertineFont/LinLibertine_It-2.8.2.ttf'); $object->setFont($font, $size); return $font; }
okay..看到这里大家就知道怎么修改了吧..
只需要把字体的库文件替换一下就okay.
如果你不会替换,请等待我们的Magento 中文版,将会在近期发布.
okay,回过头来.说一下我要实现的效果.
因为默认的pdf上,是没有store的名字或者域名的.
客户想在pdf上加上本网站的域名.这样好做区分.
我们只需要照猫画虎.就能做到这个效果..
我先说个简单的办法.
我们打开:app/code/core/Mage/Sales/Model/Order/Pdf/Abstract.php
然后把这段代码加到
$page->drawText(Mage::helper('sales')->__('Website : ') . "你网站的域名", 400, 780, 'UTF-8');
$page->drawText(Mage::helper('sales')->__('Invoice # ') . $invoice->getIncrementId(), 35, 780, 'UTF-8');
的下面.
就okay了..
当然,如果觉得位置不够好.只需要修改一下坐标
$page->drawText(Mage::helper(‘sales’)->__(‘Website : ‘) . “你网站的域名”, 400, 780, ‘UTF-8′);
如果你还需要其他的修改.可以照猫画虎做出来.. 不要把magento想得很复杂.
想要输出logo
请参考:
// load image $image = Zend_Pdf_Image::imageWithPath('logo.jpg'); $pdfPage->drawImage($image, 100, 100, 400, 300);
samshuai发表于 2010-5-31 19:00
http://www.magentochina.org/bbs/viewthread.php?tid=1583


我写的这个文章.. 后面半段有错误… magento本身是支持pdf logo的.. 自己没找到地方.. 所以自己做上去了..
后台在后台上有找到了的
马上要做到pdf部分了,多谢!