CUPS (OpenSUSE) применяет пользовательский фильтр, который выполняется непосредственно перед бэкендом - PullRequest
0 голосов
/ 18 октября 2018

Я столкнулся с задачей, которая состоит из нескольких этапов.Один этап можно сформулировать так: «поймать каждый файл задания на печать перед печатью и сохранить его в указанном месте; файл задания на печать должен содержать такую ​​информацию, как общее количество страниц для печати и т. Д.».

Насколько я понимаю,CUPS реализует расширяемый конвейер, который содержит цепочку фильтров, серверную часть и другие части.

Во время конвейера фильтра обычно фильтры PSTOPS или PDFTOPDF вставляют определенную информацию о задании на печать, которую я хочу получить.

Я полагаю, что мне нужновнедрить пользовательский фильтр, который появляется сразу после PSTOPS / PDFTOPDF и заданий печати резервных копийДля этого я добавлю

application/vnd.cups-postscript application/vnd.cups-postscript 0 customFIlterName application/vnd.cups-pdf application/vnd.cups-pdf 0 customFilterName

к mime.convs (или local.convs ).

А вот и мои вопросы:

  1. Будут ли называться мои пользовательские фильтры?(они имеют нулевую стоимость, но я не уверен, что CUPS добавит этот шаг в конвейер)
  2. Что мне делать с очередями, которые не попадают в фильтры PSTOPS | PDFTOPDF?
  3. Рано или поздно,Трубопровод достигает внутренней части, которая напрямую связывается с принтером.Стоит ли пытаться сделать резервную копию на этом этапе вместо этапа фильтрации?Если да, то как это можно осуществить?

Большое спасибо за ответ!

1 Ответ

0 голосов
/ 07 ноября 2018

Я хотел бы поделиться тем, что я реализовал, на случай, если это может пригодиться кому-то еще.

Возможности устройства и некоторая другая информация включены в связанные файлы ppd (etc / cups / ppd / DEVICE_NAME.ppd).

Файл Ppd содержит строку типа "* cupsFilter: IN_MIME OUT_MIME FILTER_NAME".Эта строка указывает, какой фильтр должен быть вызван перед бэкендом.Строка может быть отредактирована, например, IN_MIME становится CUSTOM_IN_MIME, которая должна быть объявлена ​​в связанных файлах описания mime чашек.Тогда пользовательский фильтр с, скажем, нулевой стоимостью может быть объявлен как IN_MIME CUSTOM_IN_MIME.

Тогда это единственный фильтр, который понимает CUSTOM_IN_MIME и, следовательно, должен вызываться (на самом деле CUSTOM_IN_MIME идентичен IN_MIME и вводится только для принудительного использования настраиваемого фильтра).

В CUSTOM_FILTER мы можем реализовать все, что захотим.Это очень мощный и общий подход для внедрения в CUPS.

Надеюсь, это кому-нибудь поможет.

...