http://www.sqlstudy.com/article/printing-magento-pdf-orders.html

Magento订单打印(pdf格式)

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/目录下可以找到。下面是建立中文字的代码:

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见到我就笑嘻嘻的。

Magento订单打印(pdf格式) 转:鹏程万里相关推荐

  1. CSDN网页打印PDF格式

    CSDN网页打印PDF格式 相较于网页右键打印更加完整简洁 浏览器:Google Chrome 如图打开浏览器的开发者模式 找到 console 窗口,并输入以下代码,回车保存打印. (functio ...

  2. html表格打印成pdf格式文件,使用html2pdf打印PDF格式文件中的数据作为PDF文件

    我想从表单文章中获取一些数据并将其输出到PDF2文件中,并在同一页面上使用html2pdf.但是,当试图将表单数据发布到同一页面时,它不会打开PDF文件,这可能是因为PHP文件的其余部分将出现在if( ...

  3. pdf打印机安装程序_CAD快速出打印PDF格式文件

    pdf最大的特点就是只能查看,不可编辑. 我们肯定不能够直接给到客户CAD源文件, 所以我们需要把CAD文件格式,转换成为PDF格式. PDF格式,比起CAD文件,能够更好的阅览 CAD是不能够直接生 ...

  4. 打印机无法打印PDF格式的电子发票问题

    PDF带有格式 可以通过选中打印的文本检测,如果能够选中文本,则带有格式 解决方案,在自己的电脑上用PDF处理软件"打印"一下: 修改横纵向等参数,输出的PDF不能选中文字即可打印 ...

  5. pdffactory 打印字体_使用pdfFactory虚拟打印机为打印PDF文件添加文字批注

    工作中,常会遇到PDF格式的合同需要打印,但有些内容需要做简单批注,如何在PDF格式的合同上面添加文字批注呢? 此篇内容,小编将分两步介绍PDF虚拟打印机--pdfFactory专业版如何添加文字批注 ...

  6. DjVu 文件格式比PDF格式好!

    DjVu 文件格式比PDF格式好! 1.使用LizardTech Virtual Printer Pro打印成Djvu格式的方法: 这种格式压缩比高,图片质量也好.使用默认设置,打印成彩页,40页书的 ...

  7. CAD图纸转为PDF格式打开或打印格式改变怎么办?

    很多搞土木的小伙伴经常需要面临把CAD图纸转为PDF格式打开或打印,但是经常遇到的问题就是转换后的图纸去打印,会改变样式,打出了的图纸贼难看? 这是什么样原因导致的?其实就是你没选择好的CAD转PDF ...

  8. PDFBox打印PDF A4格式文档和定制规格条码实例

    新接手一个打印终端的项目,要求可以打印A4格式的单据和 70mm * 40mm 规格的条码. 整体流程可分两种情况, 一种是将打印模板转换为pdf文档二进制数组,进而生成为pdf文档,保存到本地,然后 ...

  9. \t\t把超星图书虚拟打印为PDF格式,实现永久阅读

    把超星图书虚拟打印为PDF格式,实现永久阅读 超星图书是一个丰富的电子图书资源,一般大学图书馆购买了这个系统的账号即可登陆下载其所提供的所有图书.有些绝版图书都能找到.非常实用,首先感谢超星图书工作人 ...

最新文章

  1. python2 转 python3 代码
  2. java图遍历求最长路径_如何在Java中使用递归实现矩阵中最长路径的返回
  3. First Post
  4. 古典、SOA、传统、K8S、ServiceMesh
  5. HDU -2546饭卡(01背包+贪心)
  6. 什么是 C 和 C ++ 标准库?
  7. SVN客户端安装以及操作流程
  8. 大学计算机作业互评评语简短,学生作业互评表的填写方法
  9. MTPA 永磁同步电机 计算
  10. Java setlocale方法_Java MessageFormat setLocale()用法及代码示例
  11. Flutter 项目实战 网络请求MD5+时间戳+验证签名 十一
  12. RS-485 工作逻辑
  13. 基于cesium的三维管线系统综述
  14. 生成的分子图像是否可以识别为SMILES,然后再将识别后的SMILES转换为图像?
  15. 游戏中BUFF的实现
  16. Android viewpager2 + indicator 实现页面滑动
  17. 越来越卷,教你使用Python实现卷积神经网络(CNN)
  18. github免费建站和文件夹上传技巧
  19. 单枪匹马想要搞定亿级流量?2021阿里都换成这个牛逼架构了
  20. 火炬开发区理工学校计算机等级考,我校召开2018下半年全国计算机等级考试考务工作会...

热门文章

  1. Docker-- 什么是Docker和Docker的基本知识
  2. 331_S32K144 CAN FIFO初步
  3. appium自动化实例
  4. about GLOBAL TEMPORARY TABLES
  5. vue 能拿到对象 打印对象 但获取不到具体属性 属性 undefined
  6. 《财富自由之路》读书笔记
  7. 你不得不关注的5 大Android 开发技术——2020
  8. 怎样翻译文字既快速又准确?翻译技巧指南分享
  9. 14. 异步加载Js的方式有哪些?
  10. 互联网测试校招系列2:准备越充分,机会越大!