Magento订单打印(pdf格式)
2015-05-24 21:23
197 查看
Magento自身包含有:打印发票单,打印装箱单,打印退款单。这些都是基于西方国家的习惯来布置的。公司有个需求就是打印订单的四联单,PDF格式的,要一周内完成。刚接到这个任务时,觉得头大,因为对于PHP如何生成PDF文件,以及Magento的打印系统,都还是一无所知。另外这次是中文打印,这和Magento内置的英文订单打印有区别。
接下来就是分析代码。对于第一个问题:PHP如何生成PDF文件,方法就是利用Zend_Pdf库来实现;对于Zend_Pdf中文乱码的问题,也通过可爱的Google找到了解决办法;另外通过代码分析也熟悉了Magento内置的打印系统。由于经常开会和有其他的琐碎任务,又拖了几周后才开始动手编程,花了大概五天就完成了。先晒晒成熟的果实:
遇到的几个问题:
一、Magento打印中文PDF订单乱码。这个需要加载中文字体来解决。我采用的是楷体(simkai.ttf)和微软雅黑粗(msyhbd.ttf)字体,本来是想采用宋体的,发现Zend_Pdf对宋体的支持有点问题。微软雅黑字体也比较好看,就用她了。注:simkai.ttf和msyhbd.ttf在c:/windows/fonts/目录下可以找到。下面是建立中文字的代码:
二、绘制订单左上角公司Logo。这个需要用到Zend_Pdf_Image。瞧代码:
三、绘制条形码。代码是在网上找到,稍加修改的。原理是利用PHP GD生成条形码图片,然后通过Zend drawImage()绘制于订单上。代码比较复杂,略。
四、获取制单员工姓名。
五、获取Magento订单支付方式,也比较复杂。调试了很久,才得到下面的代码,可能有点问题,但大部分时候能正常工作:
除去这几个问题有点难度,其他的都相对容易解决。功能完成后,制单客服MM的工作大大减轻。以前是手工在word模板上制作的,难免会出错。而且复制粘贴,特单调机械无聊,而且每人每天累的头晕只能制一百张单左右。现在几分钟之内上千张单立马OK。后来客服MM见到我就笑嘻嘻的。
原文:http://blog.sina.com.cn/s/blog_4066b17f01014vlz.html
接下来就是分析代码。对于第一个问题:PHP如何生成PDF文件,方法就是利用Zend_Pdf库来实现;对于Zend_Pdf中文乱码的问题,也通过可爱的Google找到了解决办法;另外通过代码分析也熟悉了Magento内置的打印系统。由于经常开会和有其他的琐碎任务,又拖了几周后才开始动手编程,花了大概五天就完成了。先晒晒成熟的果实:
遇到的几个问题:
一、Magento打印中文PDF订单乱码。这个需要加载中文字体来解决。我采用的是楷体(simkai.ttf)和微软雅黑粗(msyhbd.ttf)字体,本来是想采用宋体的,发现Zend_Pdf对宋体的支持有点问题。微软雅黑字体也比较好看,就用她了。注:simkai.ttf和msyhbd.ttf在c:/windows/fonts/目录下可以找到。下面是建立中文字的代码:
1 | $fontyah =Zend_Pdf_Font::fontWithPath(Mage::getBaseDir() . '/lib/ZhFont/msyhbd.ttf' ); |
2 | $fontkai =Zend_Pdf_Font::fontWithPath(Mage::getBaseDir() . '/lib/ZhFont/simkai.ttf' ); |
1 | $logofile =Mage::getBaseDir() . '/skin/frontend/default/default/images/print_logo.jpg' ; |
2 |
3 | if ( $logofile ) { |
4 | if ( is_file ( $logofile )) { |
5 | $image =Zend_Pdf_Image::imageWithPath( $image ); |
6 | $page ->drawImage( $image ,25,800,125,825); |
7 | } |
8 | } |
四、获取制单员工姓名。
1 | $user =Mage::getSingleton( 'admin/session' )->getUser(); |
2 | $user_name = $user ->getLastname() . $user ->getFirstname(); |
01 | $paymentInfo =Mage::helper( 'payment' )->getInfoBlock( $order ->getPayment()) |
02 | ->setIsSecureMode(true) |
03 | ->toPdf(); |
04 |
05 | $payment = explode ( '{{pdf_row_separator}}' , $paymentInfo ); |
06 |
07 | foreach ( $payment as $key => $value ){ |
08 | if ( strip_tags (trim( $value ))== '' ){ |
09 | unset( $payment [ $key ]); |
10 | } |
11 | } |
12 |
13 | reset( $payment ); |
14 |
15 | $payment =trim( $payment [0]); |
原文:http://blog.sina.com.cn/s/blog_4066b17f01014vlz.html
相关文章推荐
- Magento订单打印(pdf格式) 转:鹏程万里
- Magento订单打印(pdf格式)
- magento打印订单里面添加运输方式
- Magento My Orders里面不显示订单
- SAP 采购订单打印完后不可以取消审批
- magento修改发送邮件内容和订单邮件提醒设置
- [Magento SQL] 获取每个客户历史总计订单数量和金额
- Magento 删除所有订单 适于于1.4+
- Magento后台订单显示产品图片的修改方法
- Magento paypal付完款后订单状态还是pendding payment 待付款状态如何解决?
- magento获取订单支付方式详细说明
- Magento打印(配送单、退款单、发票)时PDF中的乱码问题
- abap源代码---正常生产订单打印/两种选择
- magento下订单流程以及订单数据库结构分析
- 使用Word模板自定义输出或打印AX订单
- magento修改发送邮件内容和订单邮件提醒设置
- magento 提交订单失败跳回到购物车的问题
- magento shell 脚本 通过api获取paypal的订单状态,同步到magento网站的订单,自动纠正不准确的订单状态
- Magento中打印SQL语句来调试
- 在Ecshop后台打印订单页面将商品按货号排序