Маркировка документов

Редактировал(а) Олеся Акимова 2021/09/20 11:28

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

Такие задания могут включать в себя только один документ (файл).

В составе ОС представлены следующие средства для маркировки:

  • /usr/bin/lpattr – клиентское приложение для получения атрибутов задания;
  • /usr/share/cups/mark/ – шаблоны и сценарии на языке PostScript для маркировки документов;
  • /usr/bin/markjob-bin – приложение для маркировки документов;
  • /usr/lib/cups/mark/psmark – вспомогательное приложение, выполняющее маркировку документа печати;
  • /usr/lib/cups/mark/psmarker – сценарий, выполняющий запуск приложения psmarker с необходимыми параметрами;
  • /usr/lib/cups/mark/pssplash – вспомогательное приложение, выполняющее генерацию так называемого фонарика для документа печати;
  • /usr/lib/cups/mark/splash – сценарий, выполняющий запуск приложения pssplash с необходимыми параметрами;
  • /usr/lib/cups/mark/cupspasswd – вспомогательное приложение графического диалога запроса пароля для сервера печати.

Маркировка документа осуществляется с помощью консольного приложения markjob-bin, запускаемого от имени специального пользователя, входящего в группу lpmark.

Приложение markjob-bin производит следующие действия:

  • выводит список заданий, требующих маркировки, с помощью запроса IPP_OP_NESS_MARK_GET_JOBS;
  • запрашивает у пользователя номер маркируемого задания и список следующих атрибутов:
    • ness-inv-num – инвентарный номер;
    • ness-owner-phone – телефон исполнителя;
    • ness-workplace-id – идентификатор рабочего места;
    • ness-distribution – список рассылки;
  • отправляет запрос установки атрибутов IPP_OP_NESS_MARK_SET_JOB_ATTRIBUTES c введенными значениями вышеуказанных атрибутов на сервер печати;
  • отправляет запрос IPP_OP_NESS_MARK_JOB на сервер печати;
  • выводит номера заданий для промаркированного документа и соответствующего ему фонарика.

В ходе выполнения запроса IPP_OP_NESS_MARK_JOB на сервере печати выполняется преобразование оригинального документа в формат языка PostScript c использованием MIME-фильтра «vnd.cups-postscript».

Затем запускается на выполнение bash-скрипт /usr/lib/cups/mark/psmarker, принимающий в качестве входных параметров имя файла документа для маркировки на языке PostScript, имя файла шаблона маркировки /usr/share/cups/mark/marker.defs, имя файла переменных значений маркировки и имя выходного файла, который будет содержать промаркированный документ на языке PostScript.

В ходе выполнения этого bash-скрипта запускается на выполнение вспомогательная программа /usr/lib/cups/mark/psmarker, которая занимается подготовкой исходных данных на языке PostScript.

В процессе ее работы используются данные файла шаблона /usr/share/cups/mark/marker.template.

Затем происходит запуск программы Ghostscript /usr/bin/gs, в результате работы которой получается файл на языке PostScript, представляющий собой промаркированный документ.

В качестве исходных данных для программы Ghostscript используются следующие файлы на языке PostScript:

  • /usr/share/cups/mark/encoding.ps – данные шрифтов в кодировке Unicode, используемые для отображения текста маркировки;
  • /usr/share/cups/mark/inject.ps – реализация обработчика EndPage, используемого для нанесения маркировки на каждую страницу документа;
  • /usr/share/cups/mark/utils.ps – заготовки для отображения текста маркировки в различных частях листа.

Затем, после отработки bash-скрипта /usr/lib/cups/mark/psmarker на базе результирующего файла создается задание на печать, которое является дочерним по отношению к исходному заданию.

Это задание добавляется в очередь для печати в приостановленном состоянии.

Аналогично, для создания фонарика используется bash-скрипт /usr/lib/cups/mark/splash. Его параметры: имя файла шаблона маркировки /usr/share/cups/mark/splash.defs, имя файла переменных значений маркировки, имя выходного файла на языке PostScript, количество копий отправленного на печать документа.

В процессе выполнения этого bash-скрипта запускается на выполнение вспомогательная программа /usr/lib/cups/mark/pssplash, которая занимается подготовкой исходных данных на языке PostScript. В процессе ее работы используются данные файла шаблона /usr/share/cups/mark/marker.template.

Затем происходит запуск программы Ghostscript /usr/bin/gs, в результате работы которой получается файл фонарика на языке PostScript.

В качестве исходных данных для программы Ghostscript используются следующие файлы на языке PostScript:

  • /usr/share/cups/mark/blank.ps – пустой лист формата A4;
  • /usr/share/cups/mark/encoding.ps – данные шрифтов в кодировке Unicode, используемые для отображения текста маркировки;
  • /usr/share/cups/mark/inject.ps – реализация обработчика EndPage, используемого для нанесения маркировки;
  • /usr/share/cups/mark/utils.ps – заготовки для отображения текста маркировки в различных частях листа.

Затем после отработки bash-скрипта /usr/lib/cups/mark/splash на базе результирующего файла создается задание на печать, которое является дочерним по отношению к исходному заданию. Это задание добавляется в очередь для печати в приостановленном состоянии.

Процесс создания дочерних заданий на печать повторяется по количеству копий, запрошенных при отправке документа на печать.

Для вывода промаркированного документа и фонарика на печать следует возобновить выполнение соответствующих заданий.

Алгоритм печати документов, требующих маркировки


Посмотреть видеоуроки:

 

strelets.net
telegram: @os_strelets