如何使用 ghostscript 在我的虚拟打印机上正确打印 Microsoft Word 文档?

How to get Microsoft Word print docx right with my virtual printer using ghostscript?

我正在实施一个与 google 云打印机相同的程序。它是一个使用 postscript class 驱动程序的虚拟打印机。如图所示(我加了64后缀)。中文翻译成英文是 帮助文件、配置文件数据文件驱动程序文件依赖项。

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

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

ps:我还测试了 Microsoft Print to PDF。如果我在Word中select三份,作业队列中的作业信息总是一份。但是,目标pdf文件包含三份(如果docx是一页,目标pdf是三页)。

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

你的第二个问题好像是'why do I only get one copy of the PDF file'。那么,我要问的第一个问题是您的期望是什么?您希望一个 PDF 文件包含三份内容副本,还是 3 个 PDF 文件,每个文件包含一份内容副本?

有两种可能的方法来获得多个副本;首先将内容发送三次,或者(在 PostScript 程序中)将 /#Copies 设置为所需的副本数。我无法判断(因为在这两种情况下您都没有提供 PostScript 程序)每个应用程序正在使用哪种方法。

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

你无法改变这一点。