É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?

21
demandé sur David Osborn 2008-11-03 05:02:20

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".

19
répondu Peter Ang 2012-10-09 20:34:18

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...

7
répondu CMS 2008-11-03 02:28:32

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.

5
répondu Douglas Anderson 2008-11-13 17:19:46

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.

  1. ouvrir le fichier solution dans Visual Studio 2015.
  2. 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
  3. 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.
  4. 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

3
répondu Ogglas 2018-02-01 19:15:10

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)

1
répondu dolzenko 2009-03-19 13:06:20

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é.

0
répondu faulty 2008-11-03 03:20:04

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.

0
répondu Cyril Gupta 2008-11-03 05:05:45

vous ne pouvez pas. Le modèle de pilote de Windows est natif.

-1
répondu Aidan Ryan 2008-11-03 02:28:48

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

-1
répondu PDK 2010-05-10 15:11:27