Принтер печатает набор pjl

Обновлено: 03.07.2024

В корпоративной среде печати, использующей такие пакеты, как системы SAP, JD Edwards, Oracle Financials или Unix, задания печати (например, пакетные отчеты) обычно отображаются в очередях печати под именем системной учетной записи, а не под учетной записью инициирующего пользователя. имя. В результате все задания, напечатанные из этих программ, записываются в журнал заданий PaperCut NG/MF. В журнале заданий хранится история всех заданий печати, включая следующие сведения: пользователь, который печатал (т. события печати, количество страниц, атрибуты документа, такие как цвет, двусторонняя печать, оттенки серого, размер бумаги, область документа, длина бумаги, источник задания на печать (имя рабочей станции или IP-адрес), а также имя и тип документа. (например, имя файла документа Word). как принадлежащий учетной записи программы/системы.

Эта функция часто сочетается с псевдонимами пользователей (включите псевдонимы имен пользователей в меню «Параметры» > «Дополнительно») при работе с различиями между именами пользователей, используемыми в среде PaperCut NG/MF, и во внешней системе или программе, которая отправляет эти задания. Например, john.wayne в PaperCut NG/MF может иметь jwayne в качестве идентификатора пользователя SAP. Дополнительные сведения см. в разделе Включение псевдонимов имен пользователей

.

При настройке процесса извлечения применяются следующие правила:

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

Извлечение имени пользователя в настоящее время не поддерживается в Novell.

Имя пользователя включается в первый мегабайт файла спула.

Настройка PaperCut для извлечения имен пользователей из буферных файлов

Извлечение имени пользователя из буферных файлов выполняется поставщиком печати PaperCut. Поставщик печати — это служба мониторинга, установленная на дополнительном сервере печати, позволяющая PaperCut контролировать и отслеживать принтеры. Этот компонент мониторинга перехватывает локальную печать и сообщает об использовании основному серверу приложений. поэтому любой текст конфигурации, описанный в следующих шагах, необходимо вставить в [app_path]\providers\print\win\print-provider.conf . После внесения изменений в конфигурацию перезапустите службу поставщика печати перед тестированием.

Извлечение имен пользователей простым методом

Простой метод использует текст префикса и суффикса в качестве статических форзацев для извлеченного имени пользователя. В приведенном ниже примере (который вы можете скопировать и вставить в ваш print-provider.conf ) пользователь john.wayne извлекается из строки @PJL COMMENT SAP_USER="john.wayne" . Простого сопоставления достаточно в большинстве клиентских сред.

Извлечение имен пользователей с помощью расширенного метода (регулярные выражения)

Расширенный метод добавляет мощный шаблон регулярного выражения, а также возможность определить до пяти таких шаблонов, помеченных от UsernameOverrideRegex1 до UsernameOverrideRegex5 . Администраторы, использующие этот метод, должны быть знакомы с регулярными выражениями. Имя пользователя извлекается из первой группы соответствия в квадратных скобках (например, $1).

В приведенном ниже примере сопоставляются два шаблона:

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

Примеры имен пользователей в буферных файлах и регулярных выражениях для их извлечения < /th>
Имя пользователя в буферном файле Регулярное выражение для извлечения имени пользователя
@PJL SET USERNAME="john.wayne" @PJL\s+SET\s+USERNAME\s*=\s*"(\S+ ?)"
@PJL SET USERNAMEW="john.wayne" @PJL\s+SET\s+USERNAMEW\s*=\s *"(\S+?)"
@PJL XJAUSERNAME = "john.wayne" @PJL\s+XJAUSERNAME\s*=\s *"(\S+?)"
@PJL COMMENT "Имя пользователя: john.wayne" @PJL\s+COMMENT\s+"Имя пользователя\ s*:\s*(\S+?)"
@PJL COMMENT CANPJL SET USERNAME="john.wayne" @PJL\s+ COMMENT\s+CANPJL\s+SET\s+USERNAME\s*=\s*"(\S+?)"
@PJL COMMENT "Имя пользователя: john.wayne ;App FileName: True Grit.doc" @PJL\s+COMMENT\s*"Имя пользователя\s*:\s*(\S+?)\s*;
@PJL OKIAUXJOBINFO DATA="UserName=john.wayne" @PJL\s+OKIAUXJOBINFO\s+DATA\s*=\s*"UserName\s*=\ с*( \S+?)\s*"
%%For: john.wayne %%For:\s*\(?([\w \.-=]+?)\)?\b
/USERNAME (john.wayne) def /USERNAME\s*\(( \S+?)\)\s*def
/Имя пользователя (john.wayne) def /Имя пользователя\s*\((\S+? )\)\s*def
/Автор (john.wayne) def /Автор\s*\((\S+?)\) \s*def
(john.wayne) /RRCustomProcs /ProcSet findresource begin logusername end \((\S+?)\)\s* /RRCustomProcs\s*/ProcSet\s+findresource\s+begin\s+logusername
(john.wayne) XJXsetUserName \((\ С+?)\)\s*XJXsetUserName

Комментарии

Поделитесь своими выводами и опытом с другими пользователями PaperCut. Не стесняйтесь добавлять комментарии и предложения к этой статье базы знаний. Пожалуйста, не используйте это для запросов в службу поддержки.

Мы здесь, чтобы помочь

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


Эта сага продолжается уже несколько недель в очень терпеливом отделе колледжа, где я работаю.

Департамент отказался от лазерных принтеров серии HP 4100 в пользу Laserjet P4014. HP предлагает UPD только для этой модели, поэтому я выбрал PCL6 UPD и помог всем начать работу с ним.

Первая проблема, которая возникла, заключалась в том, что некоторые задания на печать создавали много страниц явной тарабарщины вместо предполагаемого файла или сообщения электронной почты. Страницы с тарабарщиной начинаются так:

@PJL SET JOBATTR="JobAcct8=USERNAME" @PJL SET JOBATTR="JobAcct9 _1qeIAgB0cPwnLhDF9XSiJM">Кажется, это происходит только при печати из Outlook. Но не все время. Иногда одно и то же сообщение печаталось идеально. Никакой очевидной рифмы или причины. После того, как я возился с различными советами, которые я прочитал в Интернете, настраивая параметры процессора печати и усугубляя ситуацию, я заменил драйвер на самый последний (на начало недели) UPD, но на этот раз выбрал PCL5.

Все настроили, вроде все в порядке. Однако один пользователь сообщает, что в основном в PDF-файлах он пропускает символы. Просто пропали случайные буквы. Я отключил расширенные параметры печати, что устранило эту проблему раньше на другом принтере, но это не имело значения. Еще один пользователь говорит, что его отпечатки всегда масштабируются до 25%, несмотря на то, что он проверяет настройки сервера по умолчанию и вручную сбрасывает их на своем ПК. только этот пользователь сообщает об этом.

Меня поражает количество странных событий, происходящих здесь. Терпение отдела, с которым я имею дело, было настоящей находкой. Но я почти не понимаю этого, я слышал, как некоторые люди клянутся, что UPD упростил их развертывание с различными моделями, но другие говорят, что это сущий кошмар.

Я не обязательно ищу поддержки по этой конкретной проблеме, но советы/комментарии по передовым методам и т. д., безусловно, будут оценены. Мысли? Я делаю что-то явно, вопиюще, глупо? Я лучше возьму это на себя на Reddit и научусь делать все правильно, чем буду продолжать крутить колеса в этой головной боли ситуации. Сервер печати — Server 2008 R2, все клиенты — Windows 7 Enterprise. Довольно стандартная настройка домена AD.

Эта страница была написана в ответ на следующий вопрос: "Как узнать, есть ли в документе PCL параметр двусторонней печати?".

Короткий ответ заключается в том, что Mako будет анализировать записи PJL (язык задания принтера) при загрузке документа PCL или PCL/XL с использованием соответствующего API Mako ( IPCLInput или IPCLXLInput ) и автоматически заполнять билеты на печать в Mako DOM. В билетах на печать используются ключевые слова, соответствующие спецификации Microsoft Print Schema. Например, запись PJL @PJL SET DUPLEX = OFF приведет к записи билета печати PageDuplex со значением OneSided.

Заявки на печать хранятся в Mako DOM в виде древовидной структуры на уровне документа и/или страницы. Доступ к ним осуществляется через семейство API-интерфейсов Mako IDOMJobTk ( IDOMJobTk , IDOMJobTkContent и IDOMJobTkNode ).

Совет. Чтобы быстро понять, как Mako будет интерпретировать PJL, используйте makoconverter (еще один пример Mako SDK) для преобразования файла PCL или PCL/XL в XPS. Там информация о билете на печать записывается в формате XML и, следовательно, удобочитаема. Просто откройте XPS с помощью вашего любимого ZIP-инструмента (здесь используется 7Zip) и найдите XML-файл билета на печать:


Распечатать содержимое билета

IPJLParser и IDOMJobTk

Синтаксический анализатор PJL, используемый внутри Mako, является общедоступным API ( IPJLParser ) и может использоваться непосредственно разработчиком Mako. Это может ускорить обработку PJL на уровне документа, поскольку поток может быть закрыт, как только будет обнаружен контент PCL или PCL/XL. Как это сделать, демонстрирует prnstream.cpp в простых примерах Mako, включенных в SDK. Более длинный пример, makopjltest, доступен на GitHub. Он демонстрирует обе техники. В выходных данных внизу справа первый результат (начальные две строки) получен из прямого синтаксического анализа PCL, а остальные — результат отчета о билетах печати документа.

В этом примере перечисляются все записи билетов на печать, которые он находит в Mako DOM. Если вам нужно найти конкретную запись, вы можете использовать use IDOMJobTkNodePtr::findChild() .

Язык заданий принтера (PJL) — это язык, поддерживаемый большинством принтеров PCL, который позволяет добавлять команды обработки на уровне задания. Люди, использующие PJL в проектах eFORMz, обычно отправляют команды окончательной обработки, например сшивание вывода.

Команды PJL можно вводить на вкладке «Файл» или «Принтер» сгенерированного содержимого шага «Содержимое eDirect»:


PJL включает следующие части. Первая и последняя строки являются обязательными.

td>
Содержимое PJL Описание
\x1b%-12345X@PJL Запуск команд PJL. Строка начинается с escape-символа \x1b. Каждая строка заканчивается символами возврата каретки и перевода строки, \r\n.
@PJL SET STAPLE = ON Скрепите задание на печать.
@PJL SET STAPLE = LEFTTOP Где сшивать задание на печать.
@PJL ENTER LANGUAGE = PCL Интерпретировать оставшееся содержимое как PCL.
\x1b%-12345X Завершить задание PJL. Это должен быть последний элемент в поле Трейлер.

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


  1. Запустите документ в Microsoft Word или аналогичном редакторе и создайте новый документ.
  2. Выберите принтер PCL для печати документа, нажмите «Свойства принтера» и установите параметры печати. Вы можете увидеть свойства принтера на изображении ниже.
  3. Нажмите маленькую стрелку справа (обведена красным ниже), перейдите в конец списка и нажмите «Печать в файл», а затем нажмите кнопку «Печать».
  4. Укажите расположение и имя файла для файла.
  5. Откройте файл в редакторе, например Notepad++.
  6. Вы можете увидеть команды PJL в верхней части файла, например:
    %-12345X@PJL JOB
    @PJL SET JOBNAME = «eFORMz Job»
    @PJL SET AUTOTRAYCHANGE = ON
    @PJL SET DUPLEX=OFF
    @PJL SET QTY = 1
    @PJL SET JOBOFFSET = OFF
    @PJL SET STAPLE=OFF
    @PJL SET PUNCH=OFF
    @PJL SET SLIPSHEETPRINT=OFF
    @PJL SET BITSPERDOT=2
    @PJL SET DATAMODE=COLOR
    @PJL SET RENDERMODE=COLOR
    @PJL SET RESOLUTION=600
    @PJL ENTER LANGUAGE=PCL
  7. Сортировка нескольких копий

    Вы можете сортировать несколько копий документа, задав @PJL SET QTY количество раз, которое вы хотите распечатать документ. При @PJL SET QTY = 2 трехстраничный документ печатается дважды: 1, 2, 3 и 1, 2, 3. Если вы устанавливаете @PJL SET COPIES = 2, документ печатается без сортировки: 1, 1 и 2, 2 и 3, 3. Следующий PJL был протестирован на принтере Lexmark C6160:

    Если вы хотите динамически устанавливать пользовательскую отделку, вам потребуется создать пользовательскую переменную, которая динамически изменяет настройки. В качестве примера загрузите следующий проект eFORMz: ProjectPJL

    Читайте также: