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见到我就笑嘻嘻的。
原文:http://blog.sina.com.cn/s/blog_4066b17f01014vlz.html
Magento订单打印(pdf格式)的更多相关文章
- 页面打印pdf格式文件
'<td><button type="button" class="btn btn-primary" data-loading-text=&q ...
- 关于Markdown格式转PDF格式
Markdown转PDF格式 个人使用的Markdown编辑平台:有道云笔记网页版 当我们编辑好自己的随笔以后,在网页的[客户端下载]下面有一个[更多]的圆形图标选项,点击后在菜单中有一处[打印]选项 ...
- 采购订单打印并预览PDF
*&---------------------------------------------------------------------* *& Report Z01MMF019 ...
- 关于这两天研究Java打印pdf方法的记录
这两天在研究Java调用打印机打印PDF文件的方法,学到了不少东西,特别来记录一下. 关于Java打印网上最多的而且也是Java正统的打印方法就是使用PrintService,一套比較标准的打印代码例 ...
- C# 打印PDF文档的10种方法
操作PDF文档时,打印是常见的需求之一.针对不同的打印需求,可分多种情况来进行,如设置静默打印.指定打印页码范围和打印纸张大小.双面打印.黑白打印等等.经过测试,下面将对常见的几种PDF打印需求做一些 ...
- CEBX格式的文档如何转换为PDF格式文档、DOCX文档?
方正阿帕比CEBX格式的文档如何转换为PDF格式文档.DOCX文档? 简介: PDF.Doc.Docx格式的文档使用的非常普遍,金山WPS可以直接打开PDF和Doc.Docx文档,使用也很方便. CE ...
- 安卓打印实现打印pdf文档
先声明一下,此处的打印非pos打印机打印和蓝牙打印机打印,如果想查找打印小票的pos打印机请进入下面的传送门,蓝牙打印目前没做过,有做过的请指教. pos打印机传送门: 1. https://www. ...
- JSP页面导出PDF格式文件
JSP页面导出PDF格式文件基本在前端页面可以全部完成 <script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/ ...
- 下载PDF格式的Html
下载PDF格式的Html 首先准备需要的两个js jsPdf.debug.js html2canvas.js 直接上代码: function download() { html2canvas(docu ...
随机推荐
- CodeForces Round 200 Div2
这次比赛出的题真是前所未有的水!只用了一小时零十分钟就过了前4道题,不过E题还是没有在比赛时做出来,今天上午我又把E题做了一遍,发现其实也很水.昨天晚上人品爆发,居然排到Rank 55,运气好的话没准 ...
- BZOJ4361 : isn
设$f[i]$表示长度为$i$的不下降子序列的个数. 考虑容斥,对于长度为$i$的子序列,如果操作不合法,那么之前一定是一个长度为$i+1$的子序列,所以答案$=\sum_{i=1}^n(f[i]\t ...
- BZOJ3787 : Gty的文艺妹子序列
将序列分成$\sqrt{n}$块,预处理出每两块之间的逆序对数,以及ap[i]表示前i块内数字出现次数的树状数组 预处理:$O(n\sqrt{n}\log n)$ 修改时,ap[i]可以在$O(\sq ...
- mysql中的comment用法
转自:http://wenku.baidu.com/view/2a54e7892cc58bd63186bd8f.html 在MySQL数据库中,字段或列的注释是用属性comment来添加. 创建新表的 ...
- Layui - 示例
示例地址 http://www.layui.com/demo/ 下载地址 http://www.layui.com/ 示例代码 <!doctype html> <html> & ...
- [转]3天搞定的小型B/S内部管理类软件定制开发项目【软件开发实战10步骤详解】
本文转自:http://www.cnblogs.com/jirigala/archive/2010/10/07/1845275.html 2010-10-07 21:39 by 通用C#系统架构, 5 ...
- PowerShell - Read an Excel file using COM Interface
http://www.lazywinadmin.com/2014/03/powershell-read-excel-file-using-com.html
- 根据CSV更新AD对象的属性
C:\aaa.csv EmpNo,Username,Hostname 800880,Wei Jiang,HCA-7N6BCS1 800571,Weifeng Wang,HCA-H3WKQM1 79 ...
- PHP下利用PHPMailer配合QQ邮箱下的域名邮箱发送邮件(转)
首先确定不是开启socks openssl phpinfo就可以知道 下载phpmailer 地址:https://github.com/PHPMailer/PHPMailer 下载完整, 个人和 ...
- thrift
环境准备: 1.下载window版本的thrift编译器 2.下载idea的thirft插件 3.设置thrift编译工具为:步骤1下载的编译器 4.编写thrift文件 namespace java ...