В какой момент CUPS фактически вызывает растеризатор в процессе печати? - PullRequest
0 голосов
/ 03 мая 2018

Я пытаюсь подключиться к растру CUPS и получить некоторую информацию более низкого уровня, такую ​​как данные о пикселях, цветовой режим, биты на пиксель, биты на цвет и все остальное на самом деле. Я не могу понять, как CUPS использует растр. Всякий раз, когда я что-то печатаю в PDF, он никогда не проходит ни одну из функций в файле filter / raster.c.

Мой подход неверен? Я пробовал печатать изображения (png), текст и PDF, и результат такой же.

1 Ответ

0 голосов
/ 19 февраля 2019

CUPS не имеет компонента, называемого растеризатором.

Когда CUPS необходимо обработать отправленный файл (вы можете печатать в командной строке, как 'lp -d printername the.file', знаете ли вы?), ...

  • ... первым делом автоматически набирает входящий файл, чтобы определить его тип mime ;
  • ... затем он проверяет, какая целевая очередь печати запрошена пользователем («имя_принца» выше рекомендуют); каждому целевому принтеру требуется свой собственный формат файла, который также является собственным типом MIME (который, конечно, отличается для PCL, PostScript, ESC / P, GDI, проприетарного «что угодно» или даже для потребления PDF-файлов). принтер);
  • ... на основе входных и требуемых типов конечных выходных файлов текущего задания CUPS создает соответствующую цепочку фильтрации и пропускает входные данные через эти фильтры.

Вы можете следить за ходом этих преобразований, включив LogLevel debug в /etc/cups/cupsd.conf (перезапустите демон CUPS после изменения этого). Затем проверьте файл журнала:

less /var/log/cups/error_log

Теперь будут отображаться строки, содержащие 'Started filter /usr/lib/cups/filter/...', указывающие время запуска каждого фильтра в цепочке.

Файл исходного кода raster / raster.c содержит код, который используется, если цепочка фильтрации содержит какой-либо из фильтров ABCDtoraster или rastertoXYZ . Эти фильтры могут присутствовать или не присутствовать в вашей системе в каталоге /usr/lib/cups/filter/, и они создают или обрабатывают формат растра для CUPS, определенный здесь: https://www.cups.org/doc/spec-raster.html

...