如何使用ghostscript在虚拟打印机上正确获取Microsoft Word打印docx?

时间:2020-03-22 10:58:35

标签: pdf ghostscript virtual-printer

我正在实现与Google云打印机相同的程序。它是使用Postscript类驱动程序的虚拟打印机。如图所示(我添加了64个后缀)。中文翻译成英文是 帮助文件,ConfigurationFile数据文件DriverFile依赖性。enter image description here

我使用redmon捕获标准输入,并使用ghostscript将其转换为pdf。同时,我从打印机队列中获取作业信息。有了pdf和工作信息,我可以将它们发送到我的服务器。然后我的服务器可以打印文档。如图所示,我调用了ghostscript。enter image description here

当我使用WPS(与Microsoft Word相同的中文应用程序)打印docx文档时,作业队列中的作业信息正确。例如,当我打印test.docx并选择三个副本(整理,彩色)时,我从作业队列中得到了正确的结果。对于Microsoft Word,事情变得很奇怪。当我使用Microsoft Word打印docx时,我从队列中获取作业信息。无论用户指定多少份,副本始终为一。同时,转换后的pdf也包含一个副本。这意味着我无法实现自己的目标(获取pdf和作业信息(如副本),然后将其发送到我的服务器)。有谁知道我如何获得正确数量的副本,或者至少它应该像Microsoft Print to Pdf打印机一样(如ps所示)。我的英语不好。谢谢!

ps:我还测试了Microsoft Print to PDF。如果我在Word中选择三个副本,则作业队列中的作业信息始终为1。但是,目标pdf文件包含三份副本(如果docx为一页,则目标pdf为三页)。

1 个答案:

答案 0 :(得分:1)

您似乎在这里问了两个问题,其中只有一个与Ghostscript有关。您的第一个问题似乎是有关打印作业时Windows打印子系统显示的内容,对此我无能为力。实际上,我怀疑除应用程序开发人员(WPS和Word)以外的任何人都可以告诉您为什么他们以不同的方式驱动打印子系统。

您的第二个问题似乎是“为什么我只能得到一份PDF文件”。那么,我要问的第一个问题是您的期望是什么?您希望一个PDF文件包含三份内容,还是3个PDF文件各包含一份内容?

有两种方法可以获取多份副本;首先将内容发送三遍,或者(在PostScript程序中)将/#Copies设置为所需的副本数。我不知道(因为在任何情况下都没有提供PostScript程序)每个应用程序正在使用哪种方法。

如果问题是您从WPS获得了三份副本,而从Word中获得了一份副本,那么我的猜测是WPS发送了3次内容,而Word发送了一次,但是将副本数设置为3。Ghostscript中的pdfwrite设备将忽略/#Copies,并且在输出中仅生成一个临时副本。

您无法更改。