PHP 开发的网站,如何实现批量打印快递单的功能?
前言
之前见过很多都是使用 js 来进行打印的,这次分享个 php 的,这里只说下 php 的方法。需要的同学可以自己动手实现一下哦!
遇到的问题:
虽然市场中不断有新的编程语言诞生,但不得不承认 PHP 在 web 开发领域仍一直占有很大份额,高效开发是他一直以来最大的一个优点,而且他的学习成本也较低,入门门槛较低,和 Python 一样是解释性语言,很多人都说他是世界上最好的语言。其实语言并没有好坏之分,只有是否适用,每门语言都有自己的优缺点,毕竟想要获得一样东西,总要放弃点什么,有舍有得,看自己怎么权衡,只要能解决问题就是好的,不管黑猫白猫抓到老鼠就是好猫。自从 swoole 的加持以及和 GO 语言的结合,也弥补语言本身的很多不足,慢慢缩小和其他语言之间的差距,不过还是有很长的路要走。--题外话
回归正题,用 php 语言开发的商城系统,需要用到批量打印发货单、快递单的功能。这个该怎么实现。目前看到的大多办法基本都是使用浏览器自带的打印功能打印网页,或者通过 JS 将特定内容显示在网页上,或者显示在浏览器自带的打印窗口。然后通过浏览器自带的打印功能进行打印,但是这样怎么保证打印出来的页面合理?或者还有什么办法?因为通过浏览器打印在排版上不容易控制,有时候还会产生布局错位,我们曾经为了解决这个问题,就把要打印的内容按照特定格式设计好写进 PDF,然后再打印,但是依然无法解决自动打单的效果。
然后就找到了使用 windows 系统接口,使用类似于桥接的方式调起打印机打印订单或者票据,方法如下:
Windows 平台
PHP 有一个叫 Printer 的 Windows 扩展,使用 win32api 调用系统打印机服务。可以打印格式化的文档、报表,还可以画一些简单的图形,打印图片。样例代码:
参考资料:http://phpstarter.net/2010/05/send-print-jobs-directly-from-php/
Unix/Linux 平台
可以使用system()
函数调用lpr
工具连接打印服务器来完成打印工作
资料:http://linux.about.com/library/cmd/blcmdl1_lpr.htm
实际用途
客户下订单时,在发货中心自动打印装箱单/发票。
在 Intranet 网站上,将所有公司打印机都配置在服务器端,这样用户就可以使用 Web 应用程序,而不必担心在他们的工作站上设置打印机。
自动打印由 CLI PHP 脚本生成的报告
总结
说到底,最终还是需要通过 pdf 来解决排版的问题,下面介绍几款生成 PDF 的第三方库。
PHP 生成 PDF 文件的扩展:
TCPDF 官网获取最新版本:http://www.tcpdf.org
还可以根据个人喜好选择下面几个
FPDF
mPDF
DOMPDF
Snappy(wkhtmltopdf)
如果还需要生成其他文档,比如 word,Excel(导数据常用)可以了解一下 PHPOffice,后面会专门写一篇文章介绍这些库的使用和技巧
版权声明: 本文为 InfoQ 作者【迷彩】的原创文章。
原文链接:【http://xie.infoq.cn/article/14660a8e051c5d7b026849700】。文章转载请联系作者。
评论