从网站,到标签打印机和激光打印机的自动打印

时间:2017-01-18 14:04:39

标签: php pdf printing

我试图找到一种方法来打印从我们基于php的网站下载的pdf文件。

目前我们必须自己指出每台打印机(小型labelprinter-large labelprinter-laserjet),但我们想要这样的工作流程:

  • 在网站上点击小标签图标。
  • 使用标签生成pdf,并获取存储在users文件夹中的.pdf文件名。
  • 基于文件的前缀和后缀监视文件夹的监视程序发送命令以打印到文件中指定的打印机。

基本上我的目标是使用自助服务终端打印模式,每个用户都有一个功能,可以指定哪个打印机在附近并且应该使用。

这是一项易于实现的功能吗?

1 个答案:

答案 0 :(得分:0)

在PHP中执行此操作非常困难,使用Python

会更容易

对于Windows

你必须制作一个python脚本,每隔10秒(或更少)扫描一个文件夹,你可以在其中放置所有要打印的文件。

while True:
    files_in_dir = os.listdir(os.path.join('path to the scanned folder'))
    time.sleep(10) # sleep 10 seconds before the new scan

然后,您可以使用gsprint将文件发送到打印机

p = subprocess.Popen(
    ['path_to_gsprint.exe', '-printer', 'printer_name', 'fullpath_file'],
    stdout=subprocess.PIPE,
    stderr=subprocess.PIPE)
out, err = p.communicate()
if out:
    print Tools.format_txt(out)
if err:
    print Tools.format_txt(err, level="error")

打印文件后,将其删除或移动到其他文件夹,以便不再扫描。

os.rename(filename, 'path to printed folder' + filename) # move file
os.remove(filename) # delete file

对于linux

在linux上,脚本非常相似,使用Python,您扫描文件夹并使用lp命令将找到的文件发送到打印机

lp -d PRINTER_NAME *.pdf

同样,打印文件后,删除或移动它们。

使用这种技术,您将无法立即打印,您将不得不等待脚本扫描文件夹,但如果您在扫描之间设置的时间很短,则不会出现问题