Как создать виртуальный принтер в Windows? - PullRequest
18 голосов
/ 19 июня 2009

Я хочу создать драйвер виртуального принтера для Windows. Как и где я могу начать правильно? В WDK есть несколько примеров драйверов печати, которые не кажутся хорошим вступлением. MSDN также, кажется, не очень полезен для новичка.

Существует множество виртуальных принтеров для Windows (в основном они генерируют PDF-файлы). Интересно, кто-нибудь может мне сказать, как я могу сделать то же самое?

Любые ссылки на разрабатывающую документацию приветствуются заранее.

Спасибо.

Ответы [ 6 ]

12 голосов
/ 19 июня 2009

Когда я сделал это (что около 12 лет назад), я начал с образца драйвера postscript, заменил все специфичные для postscript вещи (в моем случае, для записи в битовый массив вместо генерации команд postscript).

Я также написал собственный монитор печати (драйвер пишет в спулер, который пишет в монитор): мой монитор записывал в файл, например, вместо. на параллельный порт.

Однако с тех пор архитектура драйвера принтера и / или набор примеров драйверов могли измениться.

3 голосов
/ 19 июня 2009

Вы можете ознакомиться с разработкой «минидрайвер» от Microsoft (Microsoft MDT), которая может помочь в зависимости от ваших конкретных потребностей. Если порт, с которым вам нужно иметь дело (т.е. вы собираетесь брать данные из существующего драйвера принтера и хотите обработать), вы можете обратиться к исходному коду RedMon. Он не поддерживает Vista / Win7, но может указать вам правильное направление.

2 голосов
/ 30 июня 2009

Кто-то еще уже упоминал PDFCreator. Вот более конкретная ссылка на их код, который создает принтер, порт и монитор. Несмотря на то, что я нахожусь в VB, я могу следовать за ним, как кто-то более привыкший к C ++, так что, думаю, вы тоже можете. modPrinter.bas работает на ногах. modMain.bas , начиная со строки 28 и далее, вызывает modPrinter.bas.

2 голосов
/ 19 июня 2009

Один из драйверов, которые вы упомянули, является открытым исходным кодом (GPL), возможно, вы могли бы изучить его источник или адаптировать его: http://www.pdfforge.org/products/pdfcreator/download

0 голосов
/ 21 декабря 2009

Создайте монитор порта печати, свяжите этот порт с принтером, и вы получите данные, которые драйвер принтера отправляет в порт.

рабочий пример того, как это делается в Cpp и Java, можно найти здесь: http://www.mms -computing.co.uk / ик / ш / mmscomputing / устройство / PrintMonitor / index.php

...