Написание виртуального принтера в .NET
Я ищу создать виртуальный принтер, который передает данные моему .NET-приложению. Затем я хочу создать установщик, который устанавливает как принтер, так и приложение .NET. Было бы здорово, что мы могли бы написать все на C #, но у меня такое ощущение, что для этого потребуется драйвер принтера, который будет неуправляемым. Кто-нибудь знает довольно чистый учебник или пример того, как это сделать?
- Как печатать строки с разрывами строк в java
- Как заставить браузеры печатать фоновые изображения в CSS?
- Как распечатать PDF на сетевом принтере по умолчанию с помощью команды оболочки GhostScript (gswin32c.exe)
- Как очистить вывод функции печати?
- CSS для установки формата бумаги A4
- Как я могу использовать JavaPOS для печати reciepts с помощью принтера Epson?
- Как создать метод println / print для пользовательского classа
- Настройки печати WebBrowser
Посетите сайт 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
Перейдите в папку
и откройте XPSDrvSmpl.sln
в Visual Studio.
Затем следуйте руководству Microsoft по GitHub. Как вы можете видеть, это для Visual Studio 2015, но я думаю, что это то же самое для 2017 года (еще не проверено):
Чтобы создать решение драйвера с помощью набора драйверов Windows (WDK) 10 и Visual Studio 2015, выполните следующие действия.
- Откройте файл решения в Visual Studio 2015.
- Добавьте все небиблиотечные файлы (обычно расположенные в каталог установки образца) в проект пакета: a. В обозревателе решений щелкните правой кнопкой мыши Файлы драйверов b. Выберите «Добавить», затем «Существующий элемент». Перейдите в папку, в которую вы загрузили образец, и выберите все файлы в каталоге установки или эквивалентный набор не двоичных файлов, таких как INF, INI, GPD, PPD-файлы и т. Д. D. Нажмите Добавить
- Настройте эти файлы для добавления в пакет драйверов: a. В обозревателе решений щелкните правой кнопкой мыши по решению и выберите «Добавить»> «Новый проект». Выберите Пакет установки драйвера в Visual C ++ / Драйвер / Пакет Windows. б. В обозревателе решений щелкните правой кнопкой мыши проект «Пакет» и выберите «Свойства». с. На левой панели выберите «Свойства конфигурации»> «Установка драйвера»> «Файлы пакетов». д. На правой панели используйте кнопку многоточия (…), чтобы перейти к набору файлов, которые необходимо добавить в пакет драйверов. Все файлы данных, которые вы добавили на шаге 2-c, за исключением INF-файла, должны быть добавлены. Эта конфигурация является для каждой архитектуры, поэтому эту конфигурацию необходимо повторить для каждой архитектуры, которая будет построена. е. Нажмите «ОК».
- Откройте 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.