Подтвердить что ты не робот

Написание виртуального принтера в .NET

Я ищу создать виртуальный принтер, который передает данные моему .NET-приложению. Затем я хочу создать установщик, который устанавливает как принтер, так и приложение .NET. Было бы здорово, что мы могли бы написать все на С#, но у меня такое ощущение, что для этого потребуется драйвер принтера, который будет неуправляемым. Кто-нибудь знает довольно чистый учебник или пример того, как это сделать?

4b9b3361

Ответ 1

Посетите http://www.printerplusplus.com. Это виртуальный принтер .NET с открытым исходным кодом. Он предоставляет установщик и класс .NET для написания кода для обработки ваших "данных принтера".

Ответ 2

Сделал именно то, что вы просите, используя проект 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, выполните следующие действия.

  1. Откройте файл решения в Visual Studio 2015.
  2. Добавьте все недвоичные файлы (обычно расположенные в каталоге \install примера) в проект пакета: a. В обозревателе решений щелкните правой кнопкой мыши Файлы драйвера b. Выберите Добавить, затем нажмите Существующий элемент в. Перейдите в папку, в которую вы загрузили образец, и выберите все файлы в каталоге установки или эквивалентный набор недвоичных файлов, таких как INF, INI, GPD, PPD и т.д. D. Нажмите Добавить
  3. Настройте эти файлы для добавления в пакет драйверов: a. В обозревателе решений щелкните правой кнопкой мыши решение и выберите "Добавить"> "Новый проект". Выберите установочный пакет драйвера в разделе Visual C++/Windows Driver/Package. б. В обозревателе решений щелкните правой кнопкой мыши проект Package и выберите Properties. с. На левой панели выберите Свойства конфигурации> Установка драйвера> Файлы пакета. д. На правой панели используйте кнопку с многоточием (...), чтобы перейти к набору файлов, которые необходимо добавить в пакет драйверов. Все файлы данных, которые вы добавили на шаге 2-c, кроме файла INF, должны быть добавлены. Эта конфигурация для каждой архитектуры, поэтому эта конфигурация должна повторяться для каждой архитектуры, которая будет построена. е. Нажмите ОК.
  4. Откройте файл INF и отредактируйте его в соответствии со встроенным выводом. а. Откройте файл INF. б. В разделе Версия добавьте ссылку на файл каталога следующим образом: CatalogFile = XpsDrvSmpl.cat. с. В разделе SourceDisksFiles измените расположение создаваемых вами DLL файлов на = 1. Это указывает на то, что в этом драйвере нет конкретного архитектурного каталога. Если вы отправляете несколько архитектур одновременно, вам нужно будет сопоставить INF драйвера вручную.

На этом этапе Visual Studio 2015 сможет создать пакет драйверов и вывести файлы на диск. Чтобы настроить подпись и развертывание драйверов, см. Раздел Разработка, тестирование и развертывание драйверов.

https://github.com/Microsoft/Windows-driver-samples/tree/master/print/XPSDrvSmpl#build-the-sample

Ответ 4

Вы можете просто показать свое приложение как принтер типа LPD или порт монитора 9100. Затем вы можете установить любой подходящий драйвер печати и указать его в своем приложении.

Ответ 5

Ищет ответ для подобного вопроса и нашел эту ссылку через Википедию - http://www.colorpilot.com/emfprinterpilot.html (позволяет создавать виртуальные принтеры в разных языков)

Ответ 6

Почему бы не рассмотреть альтернативный подход. Подобно использованию промежуточной готовой программы печати, такой как свободно распространяемое приложение Print-to-PDF. Тогда вам нужно только расшифровать PDF, используя некоторую стороннюю библиотеку (у которой также есть свободная и открытая дисперсия), вместо того, чтобы взломать голову, чтобы изобрести колесо. Есть другое приложение Print-to-XXX, которое вы также можете рассмотреть в зависимости от формата, который вам подходит.

Ответ 7

Я тоже не понимаю, как интерпретировать PDF-подход. Я не знаю, почему вы хотите делать то, что хотите. Возможно, вы пытаетесь написать собственный PDF-принтер.

Я думаю, вы должны действительно взглянуть на Windows Driver Development. Если вы хотите разработать драйвер принтера, я думаю, вам нужно будет сделать это на С++.

Удачи.

Ответ 9

Если я правильно помню, Microsoft не поддерживает .NET в разработке драйвера принтера. Мне еще не удалось найти чистый драйвер принтера .NET. Вы будете очень смелым человеком, чтобы сделать это! На веб-сайте "Инструментарий ресурсов драйвера принтера" не говорится, что драйвер написан в .NET.