Как создать собственный драйвер принтера 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 и т. Д.).