将虚拟打印机的输出重定向到 Python 脚本

Redirecting the output of a virtual printer to a Python script

我的意图是实现以下场景:

我已经在 Whosebug 上提到了一个类似的现有问题的答案,并查找了 CUPS 和 CUPS-PDF。 CUPS_PDF 是一台虚拟打印机,因此它满足我的一个条件,但它不允许我处理发送来打印的文件。我可以监视放置转换后的 PDF 的目录,并在每次目录更改时调用 python 脚本,但这远非理想的解决方案。

我尝试使用 win32 API 以 FILE 打印机的形式在 Windows 中创建类似的东西,但它又不让我处理要打印的文件。

我也偶然发现了 Tea4CUPS,它是 CUPS 打印机的一种可编程后端,但我不太确定如何利用它。我遇到的另一种选择是使用 Windows Driver Kit (WDK) 编写虚拟打印机驱动程序,但这似乎过于复杂,特别是考虑到我需要虚拟打印机来重定向要打印的文件到我的 python 脚本。

如何实现我想要的场景?虽然我有 Python 经验,但在此之前我从未使用过虚拟打印机。

使用RedMon。它是一个开源 windows 打印机端口,可将所有打印机输出重定向到特定程序(例如 python 脚本)。

以下程序最多适用于 windows 10 个 2015 年发布的版本:

  1. 使用安装程序下载并安装 RedMon 软件。
  2. 在设备和打印机下,运行 "Add Printer" 向导作为管理员(或使用 win32 API)
  3. 使用 postscript 驱动程序添加打印机(我个人更喜欢安装 Xerox Global Print Driver PS,但其他 PS 驱动程序已经安装)并创建一个新的 "Redirected Port."
  4. 您可以配置 "Configure Port" 下的选项以将输出定向到您的脚本。