Как создать собственный драйвер принтера XP

Как бы я создал свой собственный драйвер принтера XP, который будет делать следующее:

  • печать в файл (возможно, формат XPS)
  • положить этот файл в ZIP-файл, защищенный паролем
  • отправить почтовый файл на настроенный адрес электронной почты

4 ответа

Решение

Что вам нужно, это не драйвер принтера. Один назвал это Print Monitor. Это DLL, которая будет загружена в процесс Spooler.exe. DLL дает Spooler на этапе инициализации логические имена портов, таких как LPT1:, FILE:, SPSPort: и т. Д. Optput, подготовленный с помощью драйвера принтера, должен отправляться любым способом на целевое устройство. Эта работа печатает мониторы как "Стандартный порт TCP/IP" или "Локальный порт".

Для написания монитора принтера вам необходимо скачать и установить Windows Driver Kit (WDK или некоторое время назад DDK, см. http://www.microsoft.com/whdc/devtools/WDK/default.mspx). Дополнительную информацию о написании монитора принтера см. По http://msdn.microsoft.com/en-us/library/ff563806(v=VS.85).aspx. Print Monitor - это библиотека DLL с некоторой экспортируемой функцией (см. http://msdn.microsoft.com/en-us/library/ff549405(v=VS.85).aspx). Я рекомендую вам начать с модификации Local Monitor, например, LocalMon, полный исходный код которого вы найдете после установки WDK (см. http://msdn.microsoft.com/en-us/library/ff556478(v=VS.85).aspx).

Наиболее практичной проблемой при написании монитора принтера является требование написания настоящей многопоточной DLL. Вы должны быть очень осторожны, понимать и использовать EnterCriticalSection во всех ваших функциях. Для отладки монитора принтера необходимо подключить отладчик Visual Studio к процессу Spooler. Остальное аналогично написанию стандартной Windows Win32/Win64 DLL.

ОБНОВЛЕНО: Еще одно небольшое замечание. Если вы не хотите, чтобы драйвер принтера что-либо делал с данными, отправленными на принтер, вы можете использовать универсальный драйвер принтера. Вы найдете его в разделе "Общий", принтер с названием "Общий / Только текст". Изучите некоторые настройки драйвера, которые у вас есть (например, настройки CR LF)

Хотя я не могу дать какой-либо конкретный совет, если бы я хотел сделать то, что вы описываете, первое, что я хотел бы сделать, это прочитать исходный код для PDFCreator - это драйвер печати Windows, который может выплевывать PDF-файлы.

Объедините эти программы, сначала cpri (для доступа через ваш код к устройству принтера)

Это на языке Си

http://sourceforge.net/projects/cpri/

тогда вы можете использовать

http://sourceforge.net/projects/pdfcreator

получить виртуальный принтер для генерации вывода в формате pdf, xps

Я нашел хорошее прохождение во время охоты на то же самое:

"Создание виртуального принтера Postscript в Windows с помощью Ghostscript"

http://www.stat.tamu.edu/~henrik/GSPSprinter/GSPSprinter.html

Устройства вывода, поддерживаемые ghostscript, находятся здесь: http://pages.cs.wisc.edu/~ghost/doc/cvs/Devices.htm (PDF, Postscript, PNG и т. Д.).

Пример перенаправления принтера в программу - с помощью учебника

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