【问题标题】:Intercepting a PostScript driver output on a CUPS system在 CUPS 系统上拦截 PostScript 驱动程序输出
【发布时间】:2017-02-10 08:31:19
【问题描述】:

我有一台装有 CUPS 的 Linux PC 和一台连接到它的打印机。当我创建打印作业时,是否可以获得 CUPS 驱动程序生成并发送到打印机的 PostScript 文档?

【问题讨论】:

  • 如果打印机离线或停止(或者请求未完成),您可以在/var/spool 下的某处获取文件,我认为,但它可能不会命名为 .ps 但任意,检查修改时间和第一行开始 %!PS
  • @StefanHegny 谢谢! /var/spool/cups/ 不仅包含停止的作业,还包含最后几个作业(以防用户想要重新启动它)。

标签: postscript cups


【解决方案1】:
  1. 建议您停止打印队列并从/var/spool/cups/ 获取作业文件的评论不足:

    • 您会发现没有作业文件,因为它会发送到 (PostScript) 打印机。
    • 它是 CUPS接收原始形状和格式的作业文件。

     
    现在 received 文件可能已经是 PostScript 格式(如果打印应用程序是 Firefox)。但它也可以是 CUPS 接受的任何格式(文本、图像、PDF 或“原始”输入格式)。即使它是 PostScript,CUPS 仍会在将其发送到打印设备之前对其进行一些处理。处理量取决于用户请求的明确作业选项。

  2. 要真正拦截将由 CUPS 队列 @9​​87654321@ 发送到打印机的完全相同的字节流(如我的 StackOverflow 答案链接所示)。

    但是,尝试以下步骤可能会让您很幸运:

    • FileDevice Yes 放入您的cupsd.conf。 (编辑配置文件后,停止 CUPS 服务并重新启动它。)
    • 记下您想要通过运行拦截的打印队列的当前“后端”URI:

      lpstat -v
      

      (这只是为了确保您以后可以将其恢复到与以前相同的工作状态。)

    • 通过运行修改现有的 CUPS 队列

      lpadmin -p printername -v file:/var/spool/cups/tmp/ps-test.ps
      
    • 现在您的队列与其真实设备 URI 断开连接,并“连接”到“文件”设备。它现在会将所有 已处理 打印作业存储在位置 /var/spool/cups/tmp/ps-test.ps 中。 (您可能需要 root 权限才能将其删除或在那里阅读。)

     
    如果你的 CUPS 版本比较新,你会更“不走运”。出于安全考虑,此处的FileDevice 配置参数已被删除。

【讨论】:

    猜你喜欢
    • 2010-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-13
    • 2015-10-04
    • 1970-01-01
    • 2022-07-07
    • 2022-11-29
    相关资源
    最近更新 更多