【问题标题】:How to get Microsoft Word print docx right with my virtual printer using ghostscript?如何使用 ghostscript 在我的虚拟打印机上正确获取 Microsoft Word 打印 docx?
【发布时间】:2020-03-22 10:58:35
【问题描述】:

我正在实现一个与谷歌云打印机相同的程序。它是使用 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为三页)。

【问题讨论】:

    标签: pdf ghostscript virtual-printer


    【解决方案1】:

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

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

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

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

    你无法改变它。

    【讨论】:

    • 感谢您的回复! (如果您的问题是您从 WPS 获得三份副本,从 Word 获得一份副本。)使用 PS 驱动程序和 ghostscript,我从 WPS 和 Word 获得一份副本。但是,在使用 WPS 时,作业队列指示的是真实副本,而不是 Word。因此,有没有办法从 Word 中获取正确数量的副本?
    • 抱歉,这不是 Ghostscritp 问题,它是 Word 或 Windows 打印系统(可能是 Word),我无法为您提供帮助。
    • 无论如何,谢谢你的回复。我找到了一个很好的方法来做到这一点。尽管有作业队列,但我可以从 .ps 文件中获取打印参数,这是一种非官方的方式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-13
    • 2013-07-12
    • 2020-09-08
    • 2011-04-24
    相关资源
    最近更新 更多