1

我的客户有一个旧的基于 DOS 的应用程序,它将格式化的输出发送到打印机。我已禁用打印,因此假脱机文件保留在打印队列中。我想拿起这些假脱机文件并将它们转换为 PDF 格式(然后最好删除它们)。这可以使用 WMI 吗?

顺便说一句,我无法更改应用程序中产生打印输出的任何内容。

我想将此作为我支持的现有 Visual Foxpro 实用程序的一部分。

4

2 回答 2

0

应用程序的格式化输出将是带有嵌入式 Epson 或 PCL 打印机代码的 ASCII 文本。Windows 虚拟 PDF 打印机(或其他打印机驱动程序)不支持此类数据流。您必须使用 Generic Text Only 打印机驱动程序并将输出保存到文件中。或者像 DOSprn 这样的 DOS 到 Windows 打印处理器,或者像 vDos 这样的 DOS 仿真器,它们可以为 Windows 打印机驱动程序转换 ASCII 文本。

于 2021-01-24T10:22:50.913 回答
0

有许多并发症,但其中大部分都在这里介绍。具体见:

  • 在 Spoolfile 名称中强制 JobID
  • 什么时候使用RAW?

根据应用程序、驱动程序和其他因素,假脱机文件的格式将是 EMF、XPS 或 PostScript、PCL、PCL6 等“原始”PDL。EMF 现在有点老了,但你可以找到渲染大多数 PDL 的现代组件。如果您可以获取用于假脱机到 PDF 的驱动程序,那么您就完成了。

由于 DOS 应用程序成功打印到 HP 4200(支持以下语言:HP GL/2、HP PJL、PCL 5E、PCL 6、PostScript 3),因此假脱机文件很可能是带有控制码或 PCL 转义码的 ASCII。您应该在十六进制编辑器中打开假脱机文件并查看。它们通常作为 SPL 文件存储在“C:\Windows\System32\spool\PRINTERS”中。

根据您可以使用的许可证,您可能可以使用GhostScript 。例如,对于 PCL 到 PDF,请参阅这个(旧)问题及其答案- 搜索更新的问题。

其他商业选项包括 Aspose for EMF to PDF。这些是您为特定用例寻找和评估所需的工具。

WMI 可以删除打印作业。例如在命令行上:

wmic printjob where jobid=<jobnumber> delete
于 2021-01-24T23:34:15.387 回答