首页 文章

这是通过CUPS获得纸张尺寸的最佳方式吗?

提问于
浏览
0

我有一个CUPS作业控制文件(这些可以在/ var / spool / cups / cnnnnn中找到) . 我需要获得所印刷的实际尺寸 .

这是我想出来的方式:

  • 使用 media 属性获取纸张名称 . (例如 Letter

  • printer-uri 属性中获取打印机uri . (例如 ipp://localhost/printers/MyPrinter

  • 通过将打印机uri传递给 IPP_GET_PRINTER_ATTRIBUTES 操作并获取 printer-name 属性来获取打印机名称 . (例如 MyPrinter

  • 获取PPD的路径,将打印机名称传递给 cupsGetPPD 方法 .

  • 打开PPD,将PPD的路径传递给 ppdOpenFile 方法 .

  • 通过将PPD和纸张名称传递给 ppdPageSize 方法来获取纸张尺寸 .

这将有效,但似乎有点迂回 . 是否有更有效的方式来获得我需要的东西?

2 回答

  • 0

    您实际上可以使用CUPS_GET_PPD请求直接获取ppd而不是步骤3和4.这似乎更有效 .

  • 0

    作业控制文件将包含用于打印的文件的所有作业选项 . 有3种类型的工作选择:

    • 由用户在命令行上或通过单击某些GUI元素(这些将出现在控制文件中)明确地和明确地选择的那些;

    • 由于它们包含在用户特定的 ~/.lpoptions 或系统范围的 /etc/cups/lpoptions 文件中而被隐含设置(用户特定文件已在更新版本的CUPS中迁移到 ~/.cups/lpoptions (这些文件也将出现在控制文件);

    • 由CUPS通过解析PPD并查找其中包含的默认设置添加的(这些将在控制文件中出现 not ,因为CUPS仅在处理作业时评估它们 - 这可能是2天未来,如果你使用 -o job-hold-until=indefinite .

    如果您知道printqueuename和使用的cupsserver,则可以使用以下两个命令查询该组合的默认队列设置:

    lpoptions -h cupsserver \
              -U username \
              -d printqueuename
    

    这将返回 (.)loptions 文件中所述的所有当前设置 .

    lpoptions -h cupsserver \
              -U username \
              -d printqueuename \
              -l
    

    这将返回PPD中包含的所有用户可选设置 . 请注意星号 * 如何标记每个选项的默认设置 . 另请注意 -U username 在这里很重要 - 不同的用户可能会使用不同的默认设置...

    现在请注意这些命令的结果,注意 PageSize 使用过......

相关问题