Ответ 1
Посетите http://www.printerplusplus.com. Это виртуальный принтер .NET с открытым исходным кодом. Он предоставляет установщик и класс .NET для написания кода для обработки ваших "данных принтера".
Я ищу создать виртуальный принтер, который передает данные моему .NET-приложению. Затем я хочу создать установщик, который устанавливает как принтер, так и приложение .NET. Было бы здорово, что мы могли бы написать все на С#, но у меня такое ощущение, что для этого потребуется драйвер принтера, который будет неуправляемым. Кто-нибудь знает довольно чистый учебник или пример того, как это сделать?
Посетите http://www.printerplusplus.com. Это виртуальный принтер .NET с открытым исходным кодом. Он предоставляет установщик и класс .NET для написания кода для обработки ваших "данных принтера".
Сделал именно то, что вы просите, используя проект Github: Microsoft/Windows-driver-samples/print/XPSDrvSmpl
https://github.com/Microsoft/Windows-driver-samples/tree/master/print/XPSDrvSmpl
Установщик: http://wixtoolset.org/
Применение: прослушивание внутреннего порта
Поток: установить принтер и приложение из одного установщика. Пользователь печатает что-то с вашим драйвером, в то время как приложение слушает внутренний порт. Когда данные отправляются, приложение забирает их. Это для XPS, может быть преобразовано в PDF, но поток одинаков независимо от того, что вы печатаете. Если вам нужно что-то еще, посмотрите Microsoft/Windows-driver-samples/print/на GitHub или другие источники, соответствующие вашим потребностям.
Обновить:
Много вопросов о том, как заставить драйвер работать, вот небольшой пример:
Начните с загрузки Windows Driver Kit (WDK), если он еще не установлен. При установке выберите добавить расширение для Visual Studio, а также на последнем этапе. В вашей установке Visual Studio 2017 вам необходимо иметь Desktop development with C++
чтобы иметь нужные SDK. Если у вас его нет, посмотрите ниже, как добавить его.
Как добавить функции в Visual Studio 2017?
https://developer.microsoft.com/en-us/windows/hardware/windows-driver-kit
Затем загрузите .zip
файл для мастера Windows-драйвера-примеров:
https://github.com/Microsoft/Windows-driver-samples/archive/master.zip
Перейдите в папку <UnzipFolder>\print\XPSDrvSmpl
и откройте XPSDrvSmpl.sln
в Visual Studio.
Затем следуйте собственному руководству Microsoft на GitHub. Как вы можете видеть это для Visual Studio 2015, но я думаю, что это то же самое для 2017 года (еще не проверено):
Чтобы создать решение для драйвера с помощью Windows Driver Kit (WDK) 10 и Visual Studio 2015, выполните следующие действия.
На этом этапе Visual Studio 2015 сможет создать пакет драйверов и вывести файлы на диск. Чтобы настроить подпись и развертывание драйверов, см. Раздел Разработка, тестирование и развертывание драйверов.
https://github.com/Microsoft/Windows-driver-samples/tree/master/print/XPSDrvSmpl#build-the-sample
Думаю, вам придется делать много оберток WinAPI. Начать исследование на Windows Development Development Kit, чтобы найти то, что вам нужно сделать.
Я также нашел этот коммерческий Инструмент ресурса драйвера принтера для .NET...
Вы можете просто показать свое приложение как принтер типа LPD или порт монитора 9100. Затем вы можете установить любой подходящий драйвер печати и указать его в своем приложении.
Ищет ответ для подобного вопроса и нашел эту ссылку через Википедию - http://www.colorpilot.com/emfprinterpilot.html (позволяет создавать виртуальные принтеры в разных языков)
Почему бы не рассмотреть альтернативный подход. Подобно использованию промежуточной готовой программы печати, такой как свободно распространяемое приложение Print-to-PDF. Тогда вам нужно только расшифровать PDF, используя некоторую стороннюю библиотеку (у которой также есть свободная и открытая дисперсия), вместо того, чтобы взломать голову, чтобы изобрести колесо. Есть другое приложение Print-to-XXX, которое вы также можете рассмотреть в зависимости от формата, который вам подходит.
Я тоже не понимаю, как интерпретировать PDF-подход. Я не знаю, почему вы хотите делать то, что хотите. Возможно, вы пытаетесь написать собственный PDF-принтер.
Я думаю, вы должны действительно взглянуть на Windows Driver Development. Если вы хотите разработать драйвер принтера, я думаю, вам нужно будет сделать это на С++.
Удачи.
Вы не можете. Модель драйвера Windows является родной.
Если я правильно помню, Microsoft не поддерживает .NET в разработке драйвера принтера. Мне еще не удалось найти чистый драйвер принтера .NET. Вы будете очень смелым человеком, чтобы сделать это! На веб-сайте "Инструментарий ресурсов драйвера принтера" не говорится, что драйвер написан в .NET.