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

时间:2015-09-19 08:53:19

标签: python linux windows cups virtual-printer

我的目的是实现以下场景:

  • Windows或Linux用户提供打印文档的命令(使用Ctrl + P)并在可用打印机列表中查看虚拟打印机(虚拟打印机)

  • 用户选择打印机并提供打印命令

  • 虚拟打印机不是实际打印,而是自动将文件以及选定的纸张大小,格式等发送到python脚本作为输入[可选地在将其转换为PDF后]。

  • Python脚本将文件上传到云端或某个远程存储器,以便稍后在需要时在物理打印机上检索和打印。

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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

以下程序适用于2015年发布的Windows 10:

  1. 使用安装程序下载并安装RedMon软件。
  2. 在设备和打印机下,以管理员身份运行“添加打印机”向导(或使用win32 API)
  3. 使用postscript驱动程序添加打印机(我个人更喜欢安装Xerox全局打印驱动程序PS,但已经安装了其他PS驱动程序)并创建一个新的“重定向端口”。
  4. 您可以配置“配置端口”下的选项,以将输出定向到您的脚本。