zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    SVN的安装与配置
    nginx之location配置详解及案例
    查看三种MySQL字符集的方法(转)
    JAVA_OPTS设置
    vi/vim 添加或删除多行注释
    Linux 下查看字体
    linux 安装中文字体
    Linux 压缩某个文件夹命令
    Navicat Premium 12.1.16.0安装与激活
    Rsync + sersync 实时同步备份
  • 原文地址:https://www.cnblogs.com/sunsoftware/p/4526511.html
Copyright © 2011-2022 走看看