我的客户有一个旧的基于 DOS 的应用程序,它将格式化的输出发送到打印机。我已禁用打印,因此假脱机文件保留在打印队列中。我想拿起这些假脱机文件并将它们转换为 PDF 格式(然后最好删除它们)。这可以使用 WMI 吗?
顺便说一句,我无法更改应用程序中产生打印输出的任何内容。
我想将此作为我支持的现有 Visual Foxpro 实用程序的一部分。
我的客户有一个旧的基于 DOS 的应用程序,它将格式化的输出发送到打印机。我已禁用打印,因此假脱机文件保留在打印队列中。我想拿起这些假脱机文件并将它们转换为 PDF 格式(然后最好删除它们)。这可以使用 WMI 吗?
顺便说一句,我无法更改应用程序中产生打印输出的任何内容。
我想将此作为我支持的现有 Visual Foxpro 实用程序的一部分。
应用程序的格式化输出将是带有嵌入式 Epson 或 PCL 打印机代码的 ASCII 文本。Windows 虚拟 PDF 打印机(或其他打印机驱动程序)不支持此类数据流。您必须使用 Generic Text Only 打印机驱动程序并将输出保存到文件中。或者像 DOSprn 这样的 DOS 到 Windows 打印处理器,或者像 vDos 这样的 DOS 仿真器,它们可以为 Windows 打印机驱动程序转换 ASCII 文本。
有许多并发症,但其中大部分都在这里介绍。具体见:
根据应用程序、驱动程序和其他因素,假脱机文件的格式将是 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