Magento订单打印(pdf格式) 转:鹏程万里
来源:互联网 发布:油性肌肤用的面霜 知乎 编辑:程序博客网 时间:2024/06/06 09:05
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格式) 转:鹏程万里
- 鹏程万里
- magento打印订单里面添加运输方式
- 让Magento生成的PDF打印图片(Magento invoice shipment pdf add product images)
- VB.net PDF格式打印多页
- java 将HTML 转换 打印pdf格式
- Magento订单管理
- Magento 订单删除
- magento 删除订单
- Magento订单流程小记
- Magento 订单清空
- magento删除订单
- Magento订单状态迷思
- 50.magento 订单状态
- PHP输出PDF打印HTML5+CSS3打印格式控制
- word格式转pdf格式
- html格式转pdf格式
- pdg格式转pdf
- spring mvc controller间跳转 重定向 传参
- 全世界云计算宕机和中断[2013年-2014年集锦]
- ios 真机调试123
- 代码是如何控制硬件的
- [转载]OpenWRT UCI API的使用
- Magento订单打印(pdf格式) 转:鹏程万里
- java很有用的关于获取当前路径的方式和方法
- 线程属性pthread_attr_t简介
- mysql组合表表达式union,union distinct,union all详解
- CSS3 pointer-events:none应用举例及扩展
- (四)洞悉linux下的Netfilter&iptables:包过滤子系统iptable_filter
- ThinkServer RD640 上安装redhat企业版6.5
- HHelloWorldelloWorld
- 黑马程序员 Java学习总结之集合框架(List篇)