写点什么

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

作者:迷彩
  • 2022 年 6 月 22 日
  • 本文字数:1237 字

    阅读完需:约 4 分钟

前言

之前见过很多都是使用 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工具连接打印服务器来完成打印工作

<?phpsystem('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,后面会专门写一篇文章介绍这些库的使用和技巧


发布于: 刚刚阅读数: 4
用户头像

迷彩

关注

我的工作是常年写bug|公众号:互联网有啥事 2020.06.18 加入

修bug的菜鸟~公众号:互联网有啥事

评论

发布
暂无评论
PHP开发的网站,如何实现批量打印快递单的功能?_编程_迷彩_InfoQ写作社区