我们有一个专有系统,可以通过TCP / IP与多个站点上的各种打印机通信。 系统只输出Postscript,显然是通过TCP / IP发送的。 我真的想知道是否有任何一种软件可以安装我的电脑,我可以像虚拟打印机一样来设置这些后记数据。
这将使我能够进行各种testing,以确保报告完好无损地出来。 我们无法访问底层系统或数据库,因此在输出时必须捕获这个附注。
我不需要将其转换为PDF或任何其他格式,但这将是很好的。
你不会说这是什么操作系统,但你可以使用像TCPflow,wireshark或tcpdump的东西来捕获数据包,因为它是通过networking发送的。
如果这是Windows,我相信,在当天,大多数打印机对话让你打印到一个文件。 这大概是相关驱动程序的输出。 自从我使用Windows以来,已经很长时间了,您可以放心地忽略这个段落。 这可能是一个Windows 3.11的事情。
这是我解决这个问题的方法:
我设置RawPrinterServer ,它将在端口9100上作为服务监听。然后,我安装了RedMon和Ghostscript。
Redmon允许我在Windows中创build一个自定义打印机端口,将打印作业转发到任何您喜欢的软件。
Ghostscript将解释传入的postscript并将其输出为PDF。
我在windows中创build了一个打印机,使用自定义的redirect端口指向ghostscript可执行文件。
程序path: C:\BIN\gs\gs8.63\bin\gswin32c.exe
参数: -sDEVICE=pdfwrite -dPDFX=true -dNOPAUSE -dSAFER -sPAPERSIZE=a4 -sOutputFile="C:\bin\output.pdf" -c .setpdfwrite -f -
现在在我使用的proprietry软件中,我安装了一台打印机,将其指向我的计算机的IP端口9100。
现在,当我打印到我的新“打印机”软件发送postscript到我的IP,RawPrintServer接受TCP数据,并将其转发给我设置的打印机,自定义打印机端口转发数据到Ghostscript,这将保存PDF文件在我的本地机。
我会投票给Wireshark,因为它能够轻松地遵循LPD协议的TCP strem并将其保存到文件中。
我只是testing了这一点,而你所要做的就是从输出文件的开头剥离几行文件,并且你有有效的PS。
我会让netcat监听你本地的LPD端口并把它收到的文件写入文件。 例如:
nc -l -p 515 > output.ps
专有系统是否使用LPR打印? 如果是这样的话,至less原则上可以运行一个LPR服务器,它将收到的附言写入文件而不是打印机。 我不知道其中的一个,尽pipeGoogle很快透露了很多与Windows LPR相关的东西。
如果你在C ++编译器中得心应手,那么我有一个位于某处的LPR服务器的代码。 在Windows本地支持LPR之前,我在NT3。 修改代码以将输出发送到文件而不是打印机端口并不难。 但这必须是最后的手段,必须有一些工作。
一个想法。 假设您在工作站或某个方便的服务器上安装了Windows unix打印支持,然后将打印机置于离线状态并进行打印。 postscript可能会出现在C:\ Windows \ system32 \ spool \ PRINTERS某处。
JR
在Linux上,您可以使用tcpdump或wireshark ,在Windows上我只知道wireshark,个人而言我更喜欢wireshark,因为它有一个很好的GUI,但是您可以将tcpdumplogging到一个文件并将其提供给wireshark供以后分析
设置一个127.0.0.1上的PostScript打印机。

启动一个netcat服务器进程来伪造打印机。 HP Jetdirect使用端口9100 nc -l 127.0.0.1 9100> printout.ps
打印你的文件,并享受后记grooviness 🙂
PS: 我这样做是为了解决 PDF上的内容查看限制。