8
votes

Intercepter des données envoyées à une imprimante Windows (à l'aide de REDMON)

J'ai besoin d'intercepter des données envoyées à une imprimante ESC / POS sous Windows et d'analyser.

Je voulais donc obtenir les données en texte brut, de sorte que je puisse extraire et donner un sens aux informations envoyées à l'imprimante.

Actuellement, j'ai essayé d'utiliser Redmon pour que le flux de données soit envoyé sur le port d'imprimante. Mais les données étant envoyées se présentent sous la forme de raster graphiques I.e. des points à imprimer, intégrés dans les commandes ESC / POS.

Alors je me demandais si quelqu'un peut me suggérer comment puis-je obtenir les données d'impression au format texte afin de pouvoir extraire des informations de celui-ci.


1 commentaires

Peux-tu élaborer? Quelle application envoie les données? Est-ce une application Java? Le code source est-il sous votre contrôle? Savez-vous vraiment que le texte est envoyé à l'origine? Pouvez-vous commuter le pilote d'imprimante pour écrire sa sortie dans un fichier et analyser le contenu de ce fichier? Je ne suis pas un expert imprimé, pas un expert PostScript non plus, mais je pourrais avoir une idée pour vous comment intercepter l'impression, en fonction de vos réponses.


3 Réponses :


11
votes

Les données qui sont envoyées à une imprimante ESC / POS sont données raster incorporées avec des commandes ESC / POS. C'est ce que le pilote d'imprimante ESC / POS génère de son entrée. Et c'est ce que Roughmon s'est attrapé pour vous.

semble que vous voulez voir l'entrée envoyée au pilote d'imprimante . Cela signifie que vous devrez savoir quelles applications utilisent l'imprimante et vous devez intercepter ce qui arrive sur le pilote d'imprimante.

Vous ne dites pas si vous souhaitez configurer votre interception dans un environnement "en direct" ou s'il s'agit d'un test temporaire uniquement. Si vous souhaitez tester temporairement, vous pouvez également effectuer les étapes suivantes:

  1. Pause la file d'impression (capture d'écran supérieure ci-dessous).
  2. Eventuellement: Changez le pilote à l'écart de ESC / POS à, dites PostScript ou Microsoft XPS. Faites-ce sur la même onglet "Avancé" de la boîte de dialogue Propriétés de l'imprimante, comme indiqué ci-dessus. (Capture d'écran inférieure à droite, ci-dessous).
  3. Imprimer.
  4. Récupérez le spoolfile en attente dans le répertoire de la bobine. Sous Windows 8, ceci est par défaut c: \ windows \ system32 \ spool \ imprimantes . Le spoolfile est nommé nnnnn.spl où nnnnn est le numéro de l'imprimante actuel.
  5. analyser les données PostScript ou XPS.

    Voir ces 3 captures d'écran:


    Cependant, ce serait beaucoup plus facile (au lieu d'utiliser Redmon) si vous ...

    • ... Activez simplement le paramètre du pilote d'imprimante appelé "Garder les documents imprimés" : accédez aux propriétés d'une file d'attente d'impression => Sélectionnez "Tab => Activer la case correspondante (voir Capture d'écran gauche. ci-dessus);

    • ... poisson spool à proximité de l'annuaire de spool d'impression Windows;

    • ... Analysez votre nnnnn.spl fichier:

      • sur Windows 8 Ce sera un fichier XPS. Re-nommez-le à Nnnnn.XPS et vous pouvez l'ouvrir avec le visualiseur XPS intégré.

      • sur la version précédente de Windows, le nnnnn.spl aura le format de fichier du pilote d'imprimante respectif (PostScript pour les pilotes PostScript, XPS pour l'imprimante Microsoft XPS, ESC / POS pour votre imprimante, ...). Renommez-le en conséquence et ouvrez-le dans XPS ou PostScript Viewer.


8 commentaires

Bonjour, alors simplement pour confirmer: le fichier .spl contiendra les données envoyées au pilote d'imprimante, corrigez-vous? Mais j'ai eu un peu confus lorsque j'ai vu lors d'un outil d'impression à partir du fichier .SPL: compuphase.com/ logiciel_spool.htm Si vous à cette page, il est écrit que "Spool est une petite utilitaire de console Win32 qui envoie le contenu d'un fichier sur le spouleur d'une imprimante Windows, contourner le pilote d'imprimante." Pourquoi dit-il de contourner le pilote d'imprimante lorsque ces données doivent effectivement être envoyées au pilote d'imprimante?


@shaarang: Je ne connais pas cet outil et je ne sais pas comment ça marche. Vous peut contourner le pilote d'imprimante si le format de fichier que vous souhaitez envoyer à l'imprimante est celui que l'imprimante "comprend": Selon le modèle, cela pourrait être du texte. , TIFF, PostScript, PDF, PCL ou même SVG ou XPS. (ou vous souhaitez envoyer des données arbitraires pour tester comment l'imprimante se comporte alors: s'il s'affiche silencieusement, s'il ignore silencieusement "Junk", si elle imprime de nombreuses pages contenant des caractères "aléatoires" ou des zones vides ...) / i>


Je pense que vous avez raison, mais le fichier en question est le fichierbool préparé par Windows et de toute façon ce que je veux faire, c'est d'envoyer ceci .spl à une imprimante, donc je suis tombé sur: support.microsoft.com/en-us/kb/179774 , si vous y allez, vous voyez une commande: copie 00002.spl \\ \ Mais j'ai une imprimante locale installée sur mon système, puis comment puis-je utiliser cette commande ..? Toute aide serait appréciée.


@shaarang: Votre nom d'ordinateur local est votre alors.


Oh Désolé, je suis un nouveau à Stackoverflow, je vais sûrement uppoter maintenant. Le nom d'ordinateur va bien, mais qu'en est-il de d'où je peux obtenir ça ..


@shaarang: Vous pouvez partager votre imprimante, puis tapez "NET Share" dans une fenêtre CMD.EXE pour voir le nom.


En réalité pas très actif mais dites-moi que le fichier .SPL n'est jamais dans un format de fichier compris par une imprimante que ce que l'outil peut contourner le pilote d'imprimante? : P


Pourquoi dois-je partager une imprimante locale lorsque c'est déjà directement connecté à ma machine.



2
votes

Si vous voulez simplement capturer, vous pouvez créer un port d'imprimante TCP / IP qui pointe vers l'IP d'un poste de travail et exécutez mon outil VCLPDCAP. Il surveille 9100 ou 515 (RAW ou LPR) et capture et écrit les données au fichier.

Jetez un coup d'œil ici, si vous avez besoin de plus d'instruction, faites-le-moi savoir.

mise à jour: http://www.ballisticecho.com/articles/print -Capture-LPD-9100


0 commentaires

0
votes

Vous pouvez mettre des imprimantes Epson POS dans le mode de débogage où ils imprimeront une vidage hexagonale de données entrantes. Voir page 88 de ce pdf: http://www.pos.epsg/templates/pos_developers_details.aspx?nrmode=Publied&nroriginalurl=%2fdevelopers%2ftechresDétails%2ehtm % 3FPRODUCTPK% 3D642 & NRNODEGUID =% 7B934F5A6D-E01A-40B1-B2B0-648C1EC68047% 7D & NRCACHEHINT = NomofinyGuest & productPK = 642

Pour donner un sens à cela, vous pouvez obtenir l'Epson ESC / POS SDK si vous vous inscrivez et acceptez leurs termes: https://www.epsonexpert.com/ee/prelogin/registration.htm


1 commentaires

Je cherche un moyen d'intercepter des impressions envoyées à une imprimante réseau et je sauvegarder des documents imprimés sur un répertoire avant que l'impression soit réellement effectuée par l'imprimante. Est-ce possible et si oui, comment puis-je y parvenir?