zoukankan      html  css  js  c++  java
  • Magento订单打印(pdf格式)

    Magento订单打印(pdf格式)

    Magento自身包含有:打印发票单,打印装箱单,打印退款单。这些都是基于西方国家的习惯来布置的。公司有个需求就是打印订单的四联单,PDF格式的,要一周内完成。刚接到这个任务时,觉得头大,因为对于PHP如何生成PDF文件,以及Magento的打印系统,都还是一无所知。另外这次是中文打印,这和Magento内置的英文订单打印有区别。

    接下来就是分析代码。对于第一个问题:PHP如何生成PDF文件,方法就是利用Zend_Pdf库来实现;对于Zend_Pdf中文乱码的问题,也通过可爱的Google找到了解决办法;另外通过代码分析也熟悉了Magento内置的打印系统。由于经常开会和有其他的琐碎任务,又拖了几周后才开始动手编程,花了大概五天就完成了。先晒晒成熟的果实:

    Magento打印PDF订单

    遇到的几个问题:

    一、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');

    二、绘制订单左上角公司Logo。这个需要用到Zend_Pdf_Image。瞧代码:

    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 }

    三、绘制条形码。代码是在网上找到,稍加修改的。原理是利用PHP GD生成条形码图片,然后通过Zend drawImage()绘制于订单上。代码比较复杂,略。

    四、获取制单员工姓名。

    1 $user = Mage::getSingleton('admin/session')->getUser();
    2 $user_name $user->getLastname() . $user->getFirstname();

    五、获取Magento订单支付方式,也比较复杂。调试了很久,才得到下面的代码,可能有点问题,但大部分时候能正常工作:

    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]);

    除去这几个问题有点难度,其他的都相对容易解决。功能完成后,制单客服MM的工作大大减轻。以前是手工在word模板上制作的,难免会出错。而且复制粘贴,特单调机械无聊,而且每人每天累的头晕只能制一百张单左右。现在几分钟之内上千张单立马OK。后来客服MM见到我就笑嘻嘻的。

    http://blog.sina.com.cn/s/blog_4066b17f01014vlz.html

    Flag Counter
  • 相关阅读:
    octotree神器 For Github and GitLab 火狐插件
    实用篇如何使用github(本地、远程)满足基本需求
    PPA(Personal Package Archives)简介、兴起、使用
    Sourse Insight使用过程中的常使用功能简介
    Sourse Insight使用教程及常见的问题解决办法
    github 遇到Permanently added the RSA host key for IP address '192.30.252.128' to the list of known hosts问题解决
    二叉查找树的C语言实现(一)
    初识内核链表
    container_of 和 offsetof 宏详解
    用双向链表实现一个栈
  • 原文地址:https://www.cnblogs.com/sunsoftware/p/3982735.html
Copyright © 2011-2022 走看看