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

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

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

Я думаю, вам придется делать много оберток WinAPI. Начните изучение набора драйверов для Windows, чтобы найти то, что вам нужно сделать.

Я также нашел этот коммерческий набор драйверов драйверов принтера для .NET …

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

Именно то, что вы просите, используя проект Github: Microsoft / Windows-driver-samples / print / XPSDrvSmpl

https://github.com/Microsoft/Windows-driver-samples/tree/master/print/XPSDrvSmpl

Установщик: http://wixtoolset.org/

Приложение: прослушивание внутреннего порта

Поток: установите принтер и приложение из одного установщика. Пользователь печатает что-то с вашим драйвером, и при этом приложение прослушивает внутренний порт. Когда данные отправляются, приложение выбирает их. Это для XPS, может быть преобразовано в PDF, но stream аналогичен независимо от того, что вы печатаете. Если вам нужно что-нибудь еще, проверьте Microsoft / Windows-driver-samples / print / on GitHub или другие источники, соответствующие вашим потребностям.

Обновить:

Множество вопросов о том, как заставить водителя работать здесь, – это быстрый пример:

Начните с загрузки набора драйверов Windows (WDK), если он еще не установлен. При установке выберите добавление расширения для Visual Studio, а также на последнем этапе. В Visual Studio 2017 Install вам необходимо иметь 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

Перейдите в папку \print\XPSDrvSmpl и откройте XPSDrvSmpl.sln в Visual Studio.

Затем следуйте руководству Microsoft по GitHub. Как вы можете видеть, это для Visual Studio 2015, но я думаю, что это то же самое для 2017 года (еще не проверено):

Чтобы создать решение драйвера с помощью набора драйверов Windows (WDK) 10 и Visual Studio 2015, выполните следующие действия.

  1. Откройте файл решения в Visual Studio 2015.
  2. Добавьте все небиблиотечные файлы (обычно расположенные в каталог установки образца) в проект пакета: a. В обозревателе решений щелкните правой кнопкой мыши Файлы драйверов b. Выберите «Добавить», затем «Существующий элемент». Перейдите в папку, в которую вы загрузили образец, и выберите все файлы в каталоге установки или эквивалентный набор не двоичных файлов, таких как INF, INI, GPD, PPD-файлы и т. Д. D. Нажмите Добавить
  3. Настройте эти файлы для добавления в пакет драйверов: a. В обозревателе решений щелкните правой кнопкой мыши по решению и выберите «Добавить»> «Новый проект». Выберите Пакет установки драйвера в Visual C ++ / Драйвер / Пакет Windows. б. В обозревателе решений щелкните правой кнопкой мыши проект «Пакет» и выберите «Свойства». с. На левой панели выберите «Свойства конфигурации»> «Установка драйвера»> «Файлы пакетов». д. На правой панели используйте кнопку многоточия (…), чтобы перейти к набору файлов, которые необходимо добавить в пакет драйверов. Все файлы данных, которые вы добавили на шаге 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

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

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

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

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

Удачи.

Вы не можете. Модель драйвера Windows является родной.

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

  • Печать WebBrowser без предварительного просмотра, т.е. печать с одним щелчком
  • Как отправить документ на принтер и распечатать его?
  • Печать JFrame и его компонентов
  • Печать цветов фона в Chrome
  • Печать непосредственно из браузера без всплывающего windows печати
  • icons загрузочных бутлетов Twitter отсутствуют в печати
  • Показывать DataFrame как таблицу в iPython Notebook
  • Как скрыть элемент при печати веб-страницы?
  • python 3.0, как сделать print () вывод unicode?
  • Каков самый простой способ печати массива Java?
  • Печать репитеров с термопринтером в java
  • Interesting Posts

    Горячие клавиши Windows перестали работать

    Расширенное (оранжевое) поле управления содержимым Word 2010, которое автоматически обновляется

    Git: Как переустановить многие ветви (с одним и тем же базовым фиксацией) сразу?

    Случайные триггеры активации Windows INSERT; Как остановить его навсегда?

    Наиболее эффективный алгоритм для бит-реверса (от MSB-> LSB до LSB-> MSB) в C

    Почему Windows 7 всегда автоматически меняет язык ввода или клавиатуры?

    Как выбрать текст гиперссылки в Google Chrome?

    Cygwin sshd не запускался из-за сбоя входа в систему

    Как работает поиск приближений

    Как перенести файлы из вложенных подкаталогов в другую папку в ubuntu? (Попытка снять много подпапок)

    Вход Unicode, полученный через входные компоненты PrimeFaces, поврежден

    JQuery Ajax Проводка json для webservice

    Открывается окно консоли

    Как установить регистр переменной для сохранения между играми в недоступном?

    Существует pmin и pmax, каждый из которых принимает na.rm, почему нет psum?

    Давайте будем гением компьютера.