Я ищу для создания виртуального принтера, который передает данные в мое приложение .NET. Затем я хочу создать установщик, который устанавливает как принтер, так и приложение .NET. Было бы здорово, что мы могли бы написать все на C#, но у меня такое ощущение, что для этого потребуется драйвер принтера, который будет неуправляемым. Кто-нибудь знает довольно чистый учебник или пример того, как это сделать?Написание виртуального принтера в .NET
ответ
Я думаю, вам нужно будет сделать много упаковки WinAPI. Начните исследование по телефону Windows Driver Development Kit, чтобы найти то, что вам нужно сделать.
Я также нашел, что это коммерческий Printer Driver Resource Toolkit для .NET ...
Вы не можете. Windows driver model является родным.
Почему бы не рассмотреть альтернативный подход. Подобно использованию промежуточной готовой программы печати, такой как свободно распространяемое приложение Print-to-PDF. Тогда вам нужно только расшифровать PDF, используя некоторую стороннюю библиотеку (у которой также есть свободная и открытая дисперсия), вместо того, чтобы взломать голову, чтобы изобрести колесо. Есть другое приложение Print-to-XXX, которое вы также можете рассмотреть в зависимости от формата, который вам подходит.
Я тоже не понимаю, как интерпретировать PDF-подход. Я не знаю, почему вы хотите делать то, что хотите. Возможно, вы пытаетесь написать собственный PDF-принтер.
Я думаю, вы действительно должны взглянуть на Windows Driver Development. Если вы хотите разработать драйвер принтера, я думаю, вам нужно будет сделать это на C++.
Удачи.
Вы можете просто показать свое приложение как принтер типа LPD или порт монитора 9100. Затем вы можете установить любой подходящий драйвер печати и указать его в своем приложении.
Хорошая идея. Но как насчет разбора «LPD» данные "или что-то еще через порт? – bzlm 2009-02-19 09:23:00
ищет ответ на подобный вопрос, и нашел эту ссылку через Википедию - http://www.colorpilot.com/emfprinterpilot.html (позволяет создавать виртуальные принтеры на разных языках)
Если я правильно помню, Microsoft не поддерживает .NET в рамках разработки драйверов принтера. Мне еще не удалось найти чистый драйвер принтера .NET. Вы будете очень смелым человеком, чтобы сделать это! На веб-сайте «Инструментарий ресурсов драйвера принтера» не указано, что драйвер был написан в .NET.
Посетить http://www.printerplusplus.com. Это виртуальный принтер .NET с открытым исходным кодом. Он предоставляет установщик и класс .NET для написания кода для обработки ваших «данных принтера».
ли именно то, что вы просите, используя проект GitHub: Microsoft/Windows-драйвер-образцы/печать/XPSDrvSmpl
https://github.com/Microsoft/Windows-driver-samples/tree/master/print/XPSDrvSmpl
Installer: http://wixtoolset.org/
Применение: Слушайте внутренний порт
Поток: установите принтер и приложение из одного установщика. Пользователь печатает что-то с вашим драйвером, и при этом приложение прослушивает внутренний порт. Когда данные отправляются, приложение выбирает их. Это для XPS, может быть преобразовано в PDF, но поток аналогичен независимо от того, что вы печатаете.Если вам нужно что-нибудь еще, проверьте Microsoft/Windows-driver-samples/print/on GitHub или другие источники, соответствующие вашим потребностям.
Update:
много вопросов о том, как получить драйвер работает так вот быстрый пример:
Начало загрузив набора Windows Driver Kit (WDK), если вы не установили уже. При установке выберите добавление расширения для Visual Studio, а также на последнем этапе. В вашей установке Visual Studio 2017 вам необходимо иметь Desktop development with C++
, чтобы иметь нужные SDK. Если у вас его нет, см. Ансер ниже о том, как его добавить.
How do I add features to 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 (WDK) 10 и Visual Studio 2015, выполните следующие шаги.
- Открыть файл решения в Visual Studio 2015.
- Добавить все недвоичных файлы (как правило, находится в \ директории установки образца) к проекту пакета: а. В обозревателе решений щелкните правой кнопкой мыши Файлы драйверов b. Выберите «Добавить», затем «Существующий элемент». Перейдите к местоположению, в которое вы загрузили образец, и выберите все файлы в каталоге установки или эквивалентный набор не двоичных файлов, таких как INF, INI, GPD, PPD-файлы и т. Д. D. Нажмите Добавить
- Настройте эти файлы для добавления в пакет драйвера: a. В обозревателе решений щелкните правой кнопкой мыши по решению и выберите «Добавить»> «Создать»> « ». Выберите Пакет установки драйвера в Visual C++/Windows Драйвер/Пакет. б. В обозревателе решений щелкните правой кнопкой мыши проект Package и выберите «Свойства». с. На левой панели щелкните Свойства конфигурации> Установить драйвер> Файлы пакетов. д. На правой панели используйте кнопку многоточия (...), чтобы перейти к набору файлов , которые необходимо добавить в пакет драйверов. Все данные файлы, добавленные вами на шаге 2-c, за исключением INF-файла, должны быть добавлены . Эта конфигурация является для каждой архитектуры, поэтому эта конфигурация должна быть повторена для каждой архитектуры, которая будет построена. е. Нажмите ОК.
- Откройте файл INF и отредактируйте его в соответствии с построенным выходом. а. Откройте файл INFO . б. В разделе «Версия» добавьте ссылку на каталог файл следующим образом: CatalogFile = XpsDrvSmpl.cat. с. В разделе SourceDisksFiles измените расположение файлов DLL, которые вы создаете , до = 1.Это указывает на то, что в этом драйвере отсутствует конкретная директория . Если вы одновременно отправляете несколько архитектур , вам необходимо вручную сопоставить драйвер INF.
На данный момент Visual Studio 2015 сможет построить пакет драйверов и вывести файлы на диск. Чтобы настроить подпись и развертывание драйверов, см. Раздел «Разработка, тестирование и развертывание драйверов».
https://github.com/Microsoft/Windows-driver-samples/tree/master/print/XPSDrvSmpl#build-the-sample
Он не может что именно? «Создайте установщик, который устанавливает виртуальный принтер и приложение .NET?» Конечно, он может написать все в C#. Зависит от вашего определения «все» и «на C#». – bzlm 2009-02-19 09:24:22
Да, он может, все, что ему нужно сделать, это перенаправить данные в CREATED dummy print driver или SELECTED, в его приложение. Также может быть сделано с использованием C#. – Zerone 2011-02-07 17:28:44