Écrire une imprimante virtuelle in.NET
je cherche à créer une imprimante virtuelle qui transmet des données à mon application .NET. Je veux alors créer un installateur qui installe à la fois l'imprimante et L'application.Net. Il nous serait vraiment agréable de pouvoir tout écrire en C#, mais j'ai le sentiment que cela nécessitera un pilote d'imprimante pour être écrit est du code non géré. Personne ne sait d'une assez propre tutoriel ou un exemple de comment faire cela?
9 réponses
Visite http://www.printerplusplus.com . Il s'agit d'une imprimante virtuelle open source.net. Il vous donne un installateur et une classe.Net pour écrire le code pour traiter vos "données d'imprimante".
je pense que vous aurez à faire beaucoup de WinAPI de l'emballage. Commencer des recherches sur Windows Driver Development Kit pour trouver les choses que vous avez à faire.
j'ai également trouvé ce commercial Pilote d'Imprimante Ressource boîte à outils .NET...
vous pouvez simplement faire exposer votre application comme une imprimante de type LPD ou un port moniteur 9100. Vous pouvez alors installer n'importe quel pilote d'impression que vous aimez, et pointez-le vers votre application.
a fait exactement ce que vous demandez en utilisant le projet Github: Microsoft / Windows-driver-samples/print / XPSDrvSmpl
https://github.com/Microsoft/Windows-driver-samples/tree/master/print/XPSDrvSmpl
installateur: http://wixtoolset.org /
Application: écouter le port interne
Flow: installez l'imprimante et l'application à partir d'un seul installateur. L'utilisateur imprime quelque chose avec votre pilote et pendant que l'application écoute le port interne. Lorsque les données sont envoyées, l'application les récupère. Ceci est pour XPS, peut être converti en PDF, mais le flux est similaire peu importe ce que vous imprimez. Si vous avez besoin d'autre chose, consultez Microsoft/Windows-driver-samples/print/ sur GitHub ou d'autres sources spécifiques à vos besoins.
mise à jour:
beaucoup de questions sur la façon d'obtenir le voici un exemple rapide:
commencez par télécharger Windows Driver Kit (WDK) si vous ne l'avez pas déjà installé. Lors de l'installation choisir d'ajouter l'extension pour Visual Studio, dans l'étape finale. Dans votre installation Visual Studio 2017, vous devez avoir Desktop development with C++
pour avoir les bons SDK. Si vous ne l'avez pas, voir la anser ci-dessous sur la façon d'ajouter.
comment ajouter des fonctionnalités à Visual Studio 2017?
https://developer.microsoft.com/en-us/windows/hardware/windows-driver-kit
Ensuite, téléchargez le fichier .zip
pour Windows-driver-samples master:
https://github.com/Microsoft/Windows-driver-samples/archive/master.zip
naviguez vers le dossier <UnzipFolder>\print\XPSDrvSmpl
et ouvrez XPSDrvSmpl.sln
dans Visual Studio.
puis suivre Microsofts propre guide sur GitHub. Comme vous pouvez le voir C'est pour Visual Studio 2015 mais je pense que c'est la même chose pour 2017 (pas encore testé):
pour construire une solution de pilote en utilisant Windows Driver Kit (WDK) 10 et Visual Studio 2015, effectuer les étapes suivantes.
- ouvrir le fichier solution dans Visual Studio 2015.
- ajouter tous les fichiers non binaires (généralement situés dans le répertoire \install) de l'échantillon) au projet Package: A. Dans l'Explorateur de solutions, fichiers pilotes de clic droit B. Sélectionnez Ajouter, puis cliquez sur L'élément existant C. Accédez à l'emplacement où vous avez téléchargé l'échantillon, et sélectionnez tous les fichiers dans le répertoire d'installation, ou l'équivalent des fichiers non binaires tels que INFs, INIs, GPD, PPD, etc. d. Cliquez Sur Ajouter
- Configure ces fichiers à ajouter dans le paquet du pilote: A. Dans Solution Explorer, Clic droit sur la solution et choisir Ajouter > nouveau Projet. Choisir Le Pilote Installer Paquet sous Visual C++ / Windows Conducteur/Paquet. B. Dans L'Explorateur de solutions, faites un clic droit sur le paquet projet et sélectionnez Propriétés. c. Dans le volet de gauche, cliquez sur Propriétés De Configuration > Installation Du Pilote > Fichiers Package. d. Dans le droit, utilisez le bouton ellipsis (...) accédez à l'ensemble de fichiers qui doivent être ajoutés au paquet du pilote. Toutes les données les fichiers que vous avez ajoutés à L'Étape 2-c, à l'exception du fichier INF, devraient être ajouter. Cette configuration est par architecture, donc cette configuration devoir être répété pour chaque architecture qui sera construite. e. Cliquez sur OK.
- ouvrir le fichier INF et l'éditer pour correspondre à la sortie construite. un. Ouvrez le Fichier INF. B. Dans la section Version, ajouter une référence à un catalogue fichier comme ceci: CatalogFile=XpsDrvSmpl.cat. C. Dans SourceDisksFiles section, changer l'emplacement des fichiers DLL vous sont en construction, to = 1. Cela indique qu'il n'existe pas d'architecture répertoire spécifique dans ce pilote. Si vous expédiez plusieurs architecture simultanément, vous aurez besoin de rassembler le pilote INF manuellement.
à ce stade, Visual Studio 2015 sera en mesure de construire un paquet pilote et de sortir les fichiers sur le disque. Afin de configurer la signature et le déploiement des pilotes, voir développement, test et déploiement des pilotes.
https://github.com/Microsoft/Windows-driver-samples/tree/master/print/XPSDrvSmpl#build-the-sample
cherchait une réponse à une question similaire, et a trouvé ce lien à travers Wikipedia - http://www.colorpilot.com/emfprinterpilot.html (permet de créer des imprimantes virtuelles dans différentes langues)
pourquoi ne pas envisager une autre approche. Comme l'utilisation d'un programme d'impression prêt à l'emploi intermédiaire, comme ceux librement disponibles application D'impression au PDF. Alors tout ce dont vous avez besoin est de décoder PDF en utilisant une bibliothèque tierce (qui a la variance libre et opensource trop) au lieu de casser votre tête pour réinventer la roue. Il existe d'autres applications D'impression à XXX que vous pouvez également envisager selon le format que vous jugez approprié.
je ne pense pas l'interprétation PDF approche est tout bon. Je ne sais pas pourquoi tu veux faire ce que tu veux. Peut-être que vous essayez d'écrire votre propre imprimante PDF.
je pense que vous devriez vraiment donner un coup d'oeil au développement du pilote Windows. Si vous voulez développer un pilote d'imprimante, je pense que vous devrez le faire en C++.
Bonne Chance.
vous ne pouvez pas. Le modèle de pilote de Windows est natif.
si je me souviens bien, Microsoft ne prend pas en charge .NET dans le développement des pilotes d'imprimante. Je n'ai pas encore trouvé de pilote d'imprimante pur.net. Vous serez un homme très courageux de le faire! Le site Web "Printer Driver Resource Toolkit" ne dit pas que le pilote a été écrit en .NET