通过网络捕获打印作业最可靠的方法是什么?

通过网络捕获打印作业最可靠的方法是什么?

我在一个小镇的零售店工作。我们为工人和卡车司机开设了收费账户,让他们过来取东西、签署文件,然后回去工作。这其实不是什么问题,但我的老板想在柜台安装签名板,这样他们只需要签名一次,而不是每次签名 4-6 次。我仔细考虑并阅读了相关资料,觉得这不会太难,所以我说服老板让我尝试运行一个。我过去曾使用过 C# 和 AutoHotKey,但几乎没有网络经验。

我的大部分程序现在都在运行,但它非常稀疏且效率不高,因为我使用的是一种非常不可靠的签名获取方式。我的办公室里有一台运行 Linux 的计算机,它连接到交换机。在同一个交换机上,我有一台旧打印机,交换机正在镜像数据包并将它们发送到 Linux 计算机。Linux 上的 Tcpflow 设置为全天候自动启动和运行,它捕获这些数据包并将它们保存在网络上的共享文件夹中。保存的数据包文件可以使用 ghostscript 轻松地从 Postscript 转换为 PDF 格式以进行签名。

我遇到的最大问题是镜像这台打印机非常不可靠。如果办公室里碰巧打印机缺纸,而当时没人在,它就会堆积打印作业,不再接受 TCP 数据包,因此交换机无法镜像它们,从而破坏整个过程。

有时从 Linux 到 Windows 的网络共享会在 Linux 中卸载,但这并不是我真正想问的。

我想知道的是,是否有某种方法可以通过网络模拟打印机,并配备物理 IP 地址,以便我可以使用我们的商店服务器进行打印。我不能只共享虚拟打印机或任何东西,因为我们的商店服务器在 SunOS 上运行一些专有软件。在此软件上设置打印机的唯一方法是使用打印机的 IP 地址。

如果需要任何进一步的信息,我会非常乐意回答,我全天都有空,所以除非有事,否则不会花太长时间回复。谢谢大家。

答案1

在 Linux 机器上设置 Samba,设置一个共享的“打印机”,调用脚本保存为 PDF 并执行任何操作,甚至最终打印一份硬拷贝。

Samba 配置片段可能看起来像

[PDFprinter]
        comment = Samba Virtual PDF Printer
        printing = LPRNG
        path = /var/spool/samba
        printable = Yes
        lpq command =
        lprm command =
        print command = /usr/local/bin/print2pdf /var/spool/samba/%s /home/%U

一个简单的 PDF 打印机将输出放在用户那里$HOME- 您可以更改它来执行各种操作,并且可以使用任何可以从 stdin 获取输入/参数的脚本语言 -%s是 PS 数据的打印流,%U是打印到共享的用户。

#!/bin/bash

bn=`date +%s`
ps2pdf "$1" "$2"/print_$bn.pdf

exit 0

使用任何 PostScript 打印机驱动程序安装打印机 - 我喜欢 HP 彩色激光打印机驱动程序,选择足够旧的型号,该驱动程序将内置到您使用它的任何操作系统中(我专门使用 Color LaserJet 5/5m 或 2500 系列,Apple Color LaserWriter 在 XP 时代很好用...)

我使用过类似的设置打印到 PHP 脚本,该脚本会将 PDF 作为 blob 存储在数据库中,向用户发送电子邮件,其中包含指向 Web 表单的链接以收集封面信息,通过发送和接收传真,hylafax并将传入的传真存储在数据库中。运行在 Pentium 200 w 32mb ram 上,每年为一家拥有 30 名员工的保险机构发送和接收 75k 份传真。

如果 IP 和共享名称不起作用,而您只需要一个纯 IP,则请CUPS在 Linux 机器上安装并安装其自己的共享打印机,然后通过CUPS- 我认为这将允许您使用简单的 IP 和端口号来指定要使用的打印机。

相关内容