我有一个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 回答
您实际上可以使用CUPS_GET_PPD请求直接获取ppd而不是步骤3和4.这似乎更有效 .
作业控制文件将包含用于打印的文件的所有作业选项 . 有3种类型的工作选择:
由用户在命令行上或通过单击某些GUI元素(这些将出现在控制文件中)明确地和明确地选择的那些;
由于它们包含在用户特定的
~/.lpoptions
或系统范围的/etc/cups/lpoptions
文件中而被隐含设置(用户特定文件已在更新版本的CUPS中迁移到~/.cups/lpoptions
(这些文件也将出现在控制文件);由CUPS通过解析PPD并查找其中包含的默认设置添加的(这些将在控制文件中出现 not ,因为CUPS仅在处理作业时评估它们 - 这可能是2天未来,如果你使用
-o job-hold-until=indefinite
.如果您知道printqueuename和使用的cupsserver,则可以使用以下两个命令查询该组合的默认队列设置:
这将返回
(.)loptions
文件中所述的所有当前设置 .这将返回PPD中包含的所有用户可选设置 . 请注意星号
*
如何标记每个选项的默认设置 . 另请注意-U username
在这里很重要 - 不同的用户可能会使用不同的默认设置...现在请注意这些命令的结果,注意
PageSize
使用过......