2010-03-20 4 views
0

У меня есть файл управления заданиями CUPS (их можно найти в/var/spool/cups/cnnnnn). Мне нужно получить фактические размеры печати, которая была сделана.Это лучший способ получить размер бумаги через CUPS?

Это путь я понял, чтобы сделать это:

  1. Получить имя бумаги с помощью атрибута media. (например, Letter)
  2. Получите принтер uri из атрибута printer-uri. (например, ipp://localhost/printers/MyPrinter)
  3. Получите имя принтера, передав принтер uri на операцию IPP_GET_PRINTER_ATTRIBUTES и получив атрибут printer-name. (например, MyPrinter)
  4. Получить путь к PPD, передав имя принтера методу cupsGetPPD.
  5. Откройте PPD, пройдя путь до PPD до ppdOpenFile.
  6. Получите размер бумаги, передав PPD и название бумаги методу ppdPageSize.

Это будет работать, но это немного крутизно. Есть ли более эффективный способ получить то, что мне нужно?

ответ

0

Вы можете использовать запрос CUPS_GET_PPD для прямого доступа к ppd вместо шагов 3 и 4. Это кажется более эффективным.

0

Файл управления заданиями будет содержать все параметры задания для файла, используемого для печати. Существует 3 типа вариантов работы:

  1. те части, которые были специально и явно выбраны пользователем в командной строке или щелкнули некоторые элементы GUI (эти будут отображаться в файлах управления);
  2. те, которые были введены неявно, потому что они содержатся и считываются из пользовательского ~/.lpoptions или общесистемного документа /etc/cups/lpoptions (файл с конкретным пользователем был перенесен на ~/.cups/lpoptions в более поздних версиях CUPS (эти также будут отображаться в файлах управления);
  3. те, которые были добавлены CUPS путем анализа PPD и ищет настройки по умолчанию, содержащиеся там (это те будут не появляются в файлах управления, так как CUPS оценивает их только в данный момент работа должна быть обработана - это может быть 2 дня в будущем, если вы использовали -o job-hold-until=indefinite.

Если вы знаете printqueuename и cupsserver используется, вы можете запросить настройки очереди по умолчанию для этого комбо с этими двумя командами:

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

Это возвращает все текущие параметры, как указано в файле (.)loptions (s) ,

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

Это вернет все пользовательские настройки, содержащиеся в PPD. Обратите внимание, что звездочки * отмечают настройку по умолчанию для каждой опции. Также обратите внимание, что здесь -U username - разные пользователи могут использовать разные настройки по умолчанию ...

Теперь следите за результатами этих команд с учетом PageSize ...

Смежные вопросы