0

我正在实现一个与谷歌云打印机相同的程序。它是使用 postscript 类驱动程序的虚拟打印机。如图(我加了64后缀)。中文翻译成英文是Helpfile,ConfigurationFile DataFile DriverFile Dependency。在此处输入图像描述

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

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

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

4

1 回答 1

1

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

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

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

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

你无法改变这一点。

于 2020-03-22T16:16:07.460 回答