Как был бы я создавать свой собственный драйвер принтера XP, который сделает следующее:
То, что вам нужно, - это не драйвер принтера. Один назвал его Print Monitor. Это DLL, которая будет загружена в процесс Spooler.exe. DLL дает Spooler на этапе инициализации логические имена портов, такие как LPT1:, FILE:, SPSPort: и т.д. Вывод, подготовленный драйвером принтера, должен быть отправлен любым способом на устройство назначения. В этой работе используются мониторы печати типа "Стандартный 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. Монитор печати - это DLL с некоторыми экспортируемыми функциями (см. http://msdn.microsoft.com/en-us/library/ff549405(v=VS.85).aspx). Рекомендую начать с модификации примера локального монитора LocalMon, полный исходный код которого вы найдете после установки WDK (см. http://msdn.microsoft.com/en-us/library/ff556478(v=VS.85).aspx).
Наиболее практичной проблемой при написании монитора принтера является требование написать настоящую многопоточную DLL. Вы должны быть очень внимательны, понимать и использовать EnterCriticalSection
во всех своих функциях. Для отладки монитора принтера необходимо подключить Visual Studio Debugger к процессу Spooler. Остальное не отличается от написания стандартной DLL для windows Win32/Win64.
UPDATED: Еще одно небольшое замечание. Если вы не хотите, чтобы драйвер принтера что-то делал с данными, отправляемыми на принтер, вы можете использовать универсальный драйвер принтера. Вы найдете его в разделе "Generic", принтер с именем "Generic / Text Only". Изучите некоторые настройки драйвера, которые у вас есть (например, настройки CR LF)
Хотя я не могу дать никаких конкретных советов, если бы я хотел сделать то, что вы описываете, первое, что я сделал бы, это прочитал исходный код для PDFCreator - это драйвер печати для Windows, который может выводить PDF-файлы.
Объедините эти программы, сначала cpri (для доступа через ваш код к устройству принтера)
Это на языке C
http://sourceforge.net/projects/cpri/
затем вы можете использовать
http://sourceforge.net/projects/pdfcreator
для получения виртуального принтера для генерации выходных данных в формате pdf, xps