Как программно добиться редактирования заголовка файла очереди печати обычной очереди печати Windows "файл очереди" перед отправкой на принтер?

Как перехватить и изменить файл очереди печати Windows 7 (.SPL), чтобы добавить некоторую дополнительную информацию в заголовок, например '@PJL SET NAME="PainPoint" ', прежде чем этот файл будет отправлен на принтер во время выполнения задания на печать?

Частичное извлечение файла.SPL сверху:

%-12345X@PJL SET STRINGCODESET=UTF8
@PJL COMMENT DATE=02/08/2017
@PJL ENTER LANGUAGE=PCLXL
) HP-PCL XL;2;1;FXXPL2-1.0.0,WINNT-6.1,XPL2DRV-6.9.1.1
?X???........

1 ответ

Решение

Редактирование файла спула очевидно тривиально. Хитрость в том, как получить доступ к файлу спула.

Я могу придумать несколько способов не по себе:

  1. Приостановите задание на печать после буферизации, отредактируйте его и отпустите. Смотрите мой ответ здесь. Это не тривиально, и вам может потребоваться использовать стороннее программное обеспечение в зависимости от времени и усилий.
  2. Создайте драйвер принтера или компонент диспетчера очереди, такой как порт или монитор языка, для редактирования файла. (Спасибо Кэри Грегори за предложение использовать языковой монитор). Это большая тема, и вам придется прочитать много документации, чтобы понять, как это сделать, но в WDK есть пример (Pjlmon). Обратите внимание, что более новая модель драйвера V4 для Windows 8/Server 2012 не поддерживает эти компоненты.
  3. Если вам не нужно делать это прозрачно, вы можете настроить RedMon (бесплатно), чтобы вызывать ваше приложение для редактирования файла спула. RedMon отправит его на нужный принтер.

  4. VeryPDF имеет несколько аналогичных коммерческих продуктов с большими возможностями.

Другие вопросы по тегам