PHP 开发的网站,如何实现批量打印快递单的功能?

举报
迷彩 发表于 2023/04/24 14:40:16 2023/04/24
【摘要】 前言之前见过很多都是使用js来进行打印的,这次分享个php的,这里只说下php的方法。需要的同学可以自己动手实现一下哦!   遇到的问题:虽然市场中不断有新的编程语言诞生,但不得不承认PHP在web开发领域仍一直占有很大份额,高效开发是他一直以来最大的一个优点,而且他的学习成本也较低,入门门槛较低,和Python一样是解释性语言,很多人都说他是世界上最好的语言。其实语言并没有好坏之分,只有是...
前言

之前见过很多都是使用js来进行打印的,这次分享个php的,这里只说下php的方法。需要的同学可以自己动手实现一下哦!   


遇到的问题:

虽然市场中不断有新的编程语言诞生,但不得不承认PHP在web开发领域仍一直占有很大份额,高效开发是他一直以来最大的一个优点,而且他的学习成本也较低,入门门槛较低,和Python一样是解释性语言,很多人都说他是世界上最好的语言。其实语言并没有好坏之分,只有是否适用,每门语言都有自己的优缺点,毕竟想要获得一样东西,总要放弃点什么,有舍有得,看自己怎么权衡,只要能解决问题就是好的,不管黑猫白猫抓到老鼠就是好猫。自从swoole的加持以及和GO语言的结合,也弥补语言本身的很多不足,慢慢缩小和其他语言之间的差距,不过还是有很长的路要走。--题外话

回归正题,用php语言开发的商城系统,需要用到批量打印发货单、快递单的功能。这个该怎么实现。目前看到的大多办法基本都是使用浏览器自带的打印功能打印网页,或者通过JS将特定内容显示在网页上,或者显示在浏览器自带的打印窗口。然后通过浏览器自带的打印功能进行打印,但是这样怎么保证打印出来的页面合理?或者还有什么办法?因为通过浏览器打印在排版上不容易控制,有时候还会产生布局错位,我们曾经为了解决这个问题,就把要打印的内容按照特定格式设计好写进PDF,然后再打印,但是依然无法解决自动打单的效果。

然后就找到了使用windows系统接口,使用类似于桥接的方式调起打印机打印订单或者票据,方法如下:


Windows平台


PHP有一个叫Printer的Windows扩展,使用win32api调用系统打印机服务。可以打印格式化的文档、报表,还可以画一些简单的图形,打印图片。样例代码:

<?php
    /* get the sample text */
    $lipsum = file_get_contents('lipsum.txt');

    /* open a connection to the printer */
    $printer = printer_open("Lexmark X850e XL V");

    /* write the text to the print job */
    printer_write($printer, $lipsum);

    /* close the connection */
    printer_close($printer);
?>

参考资料:http://phpstarter.net/2010/05/send-print-jobs-directly-from-php/


Unix/Linux平台

可以使用system()函数调用lpr工具连接打印服务器来完成打印工作

<?php
system('lpr -P "Hp Deskjet" document.pdf');
?>

资料:http://linux.about.com/library/cmd/blcmdl1_lpr.htm


实际用途
  • 客户下订单时,在发货中心自动打印装箱单/发票。

  • 在 Intranet 网站上,将所有公司打印机都配置在服务器端,这样用户就可以使用 Web 应用程序,而不必担心在他们的工作站上设置打印机。

  • 自动打印由 CLI PHP 脚本生成的报告


总结

说到底,最终还是需要通过pdf来解决排版的问题,下面介绍几款生成PDF的第三方库。

PHP生成PDF文件的扩展:

TCPDF官网获取最新版本:http://www.tcpdf.org

还可以根据个人喜好选择下面几个

  1. FPDF

  2. mPDF

  3. DOMPDF

  4. Snappy(wkhtmltopdf)


如果还需要生成其他文档,比如word,Excel(导数据常用)可以了解一下PHPOffice,后面会专门写一篇文章介绍这些库的使用和技巧. 

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。