我们有一个专有系统,可以通过 TCP/IP 与多个站点上的各种打印机通信。该系统仅输出 Postscript,这显然是通过 TCP/IP 发送的。我真的很想知道是否有任何类型的软件可以安装在我的 PC 上,我可以将其设置为虚拟打印机来捕获这些 Postscript 数据。
这将使我能够执行各种测试,以确保报告完好无损。我们无法访问底层系统或数据库,因此必须在输出时捕获此后记。
我不需要将其转换为 PDF 或任何其他格式,但那样就好了。
答案1
您没有说这是什么操作系统,但您可以使用 TCPflow、wireshark 或 tcpdump 之类的程序来捕获通过网络发送的数据包。
如果这是 Windows,我相信,在过去,大多数打印机对话框都允许您打印到文件。这大概是相关驱动程序的输出。我已经很久没有使用 Windows 了,所以您可能可以放心地忽略这一段。这可能是 Windows 3.11 的问题。
答案2
这是我解决这个问题的方法:
我设置原始打印机服务器它将作为服务在端口 9100 上监听。然后我安装了 RedMon 和 Ghostscript。
Redmon 允许我在 Windows 中创建一个自定义打印机端口,将打印作业转发到您喜欢的任何软件。
Ghostscript 将解释传入的 postscript 并将其输出为 PDF。
我在 Windows 中创建了一台打印机,并使用自定义重定向端口指向 ghostscript 可执行文件。
程序路径:C:\BIN\gs\gs8.63\bin\gswin32c.exe
参数:-sDEVICE=pdfwrite -dPDFX=true -dNOPAUSE -dSAFER -sPAPERSIZE=a4 -sOutputFile="C:\bin\output.pdf" -c .setpdfwrite -f -
现在,在我使用的专有软件中,我设置了一台打印机,并将其指向我的计算机的 IP 和端口 9100。
现在,当我打印到我的新“打印机”时,软件会将后记发送到我的 IP,RawPrintServer 接受 TCP 数据并将其转发到我设置的打印机,自定义打印机端口将该数据转发到 Ghostscript,后者将 PDF 文件保存在我的本地机器上。
答案3
我会选择 Wireshark,因为它能够轻松跟踪 LPD 协议的 TCP 流并将其保存到文件中。
我刚刚测试过,你所要做的就是从输出文件的开头删除几行,这样你就得到了有效的 PS。
答案4
专有系统是否使用 LPR 进行打印?如果是,至少在原则上,您可以运行 LPR 服务器,将收到的后记写入文件而不是打印机。我暂时不知道有哪一种,不过快速 Google 一下就发现了很多与 Windows LPR 相关的东西。
如果您擅长使用 C++ 编译器,我手头上就有 LPR 服务器的代码。这是我在 NT3.50 中编写的,那时 Windows 还未原生支持 LPR。修改代码以将输出发送到文件而不是打印机端口并不难。不过这必须是最后的手段,一定有某种东西可以完成这项工作。
一个想法。假设您在工作站或某个方便的服务器上安装了 Windows unix 打印支持,然后将打印机脱机并打印到它。附言可能会出现在 C:\Windows\system32\spool\PRINTERS 的某个位置。
JR