【问题标题】:Is it possible to obtain file path from IPP headers?是否可以从 IPP 标头获取文件路径?
【发布时间】:2017-11-28 10:54:00
【问题描述】:

我正在编写模拟打印机行为的打印 Web 应用程序。它使用 IPP 协议在打印请求中接收文档。 我可以从 IPP 标头中的 IPP 属性代码 0x42 获取有关打印作业的一些信息:

  • 文件名 - Notepad++ 的完整文件路径(这是我的目标),如果我从 MS Word 打印文档,则只有文件名
  • 用户名 - 来自操作系统

我可以从独立于应用程序的 IPP 获取完整的文件路径吗?我可以通过额外的要求来实现这一点吗?

【问题讨论】:

    标签: printing ipp-protocol


    【解决方案1】:

    0x42 仅指定值类型 - 在这种情况下,它可能表示类型 nameWithoutLanguage

    文件名

    简答:没有标准方法可以从 ipp 标头获取文件路径。

    根据 ipp 客户端实现(例如 windows 打印机驱动程序),您可能能够使用一些其他属性。驱动程序提交打印作业的方式有多种选择。

    • 通过 ipp 操作发送的作业PRINT_JOB (0x0002)

    文件被添加为字节流(以特定的打印作业语言格式化,如 postscript 或 pdf)。大多数实现将作业属性job-name 设置为原始文件名或文件路径的名称。

    • 通过 ipp 操作发送的作业PRINT_URI (0x0003)

    这种方法很少使用,但会提供一个 URI,打印机必须在其中加载文件或数据以进行打印。 URI 包含路径。

    用户名

    对于用户名,有一个可用的标准 ipp 属性:requesting-user-name。设置此值是 ipp 客户端(例如 windows 打印机驱动程序)的责任。 RFC 2911 Section 3.2.1.1 Print-Job-Request 说:

    “请求用户名”(名称(MAX))属性应该由 8.3 节中描述的客户端。

    【讨论】:

    • 感谢您的回复,彼得。你能推荐一些适用于 Windows 的 PS 驱动程序,发送PRINT_URI (0x0003) 吗?可能与带有文件路径字符串的另一个属性
    • 我是 unix 人,对 windows 知之甚少。您不太可能找到使用 PRINT_URI 操作的 Windows 驱动程序。打印机或打印服务器不必执行此操作,因为它不是必需的操作。因此,驱动程序通常使用标准操作。我们的 Java 实现能够使用 PRINT_URI 操作,但这对您的用例帮助不大。
    • Peter,您说:我们的 Java 实现是有能力的。是开源项目吗?
    • 不,java源码已经公开了。您使用什么编程语言来实现?请发送个人邮件(请参阅个人资料以获取联系信息)以进行进一步讨论。
    • 我正在使用 Java。我在您的个人资料中看到了电子邮件。我认为如果我们使用 Stack Overflow 讨论问题来与社区分享我们的知识会更好:)
    猜你喜欢
    • 1970-01-01
    • 2018-12-09
    • 2020-08-14
    • 1970-01-01
    • 2011-02-17
    • 1970-01-01
    • 1970-01-01
    • 2011-10-02
    • 1970-01-01
    相关资源
    最近更新 更多