Envoyer le document à l'imprimante avec C#
J'ai reçu une exigence d'une application web interne pour envoyer des documents à une imprimante de manière transparente. L'idée serait que l'utilisateur peut sélectionner la plus proche de l'imprimante, et l'application web envoyer leurs travaux d'impression à l'imprimante sélectionnée.
La première imprimante que nous avons à déployer contre les Chanoines, donc ma questions est la suivante: Comment pourrais-je aller sur l'envoi d'un document à imprimer dans le réseau à un Canon? Le type de Canon est question est un iR5570 et les documents qui sera dit sera principalement Word et Pdf
Je suis actuellement en train de travailler mon chemin à travers le terrible, c'est à dire uniquement Canon Développeur de site, mais je suis un peu en espérant que quelqu'un peut me pointer dans la bonne direction ou de me pointer à une 3ème partie de l'assemblée 🙂
OriginalL'auteur Chris Canal | 2008-10-20
Vous devez vous connecter pour publier un commentaire.
L'expression clé en question est "web application".
Dans des conditions normales application web en utilisant uniquement du HTML+Javascript sur HTTP, vous ne peut pas il suffit d'envoyer un document directement à une imprimante. C'est une des raisons pour navigateurs web existent, et sans que la fonctionnalité de chacun d'imprimante de recueillir le même genre de cochonneries qu'une machine de fax.
De sorte que vous besoin d'une sorte de travail. Une option est de construire sur un plug-in, flash, silverlight, java applet, ou même quelque chose comme greasemonkey. Un autre est un plug-in personnalisé, comme une hébergé winforms de contrôle personnalisées ou extension de navigateur.
Vous êtes très chanceux, en qui il semble que vous avez le contrôle complet (ou de connaissances) de l'environnement de déploiement, et que cet environnement si assez homogène. Cela signifie que vous avez une option supplémentaire que d'autres ont commencé à explorer. Si vous pouvez installer toutes les imprimantes dans votre environnement pour le serveur web, puis c'est assez facile à l'aide de l'intégré .Net imprimante classes (dans le
System.Drawing.Printing
espace de noms) à la liste de ceux de l'imprimante, de leur montrer ce soit à l'utilisateur, de sorte qu'ils peuvent prendre ou conserver une sorte de IP à l'Imprimante de table de mappage, puis imprimer directement sur l'imprimante à partir de votre application web. Notez que ce schéma peut exiger à votre application de fonctionner à un niveau de confiance supérieur qui serait autrement nécessaire.Maintenant, il s'agit de l'impression de votre PDF et de documents word. Pour acrobat, suivez ce lien:
http://support.adobe.com/devsup/devsup.nsf/docs/52080.htm (Wayback machine)
Notez qu'il est un peu daté, mais je pense que le concept est toujours valide. Vous aurez à expérimenter certains pour s'assurer qu'il fonctionne comme prévu.
Pour Word, je ne suis pas habituellement un fan de Bureau interop/automatisation dans une application web. Mais dans ce cas, vous n'êtes pas à l'édition de tous les documents: il suffit de le charger en place assez longtemps pour imprimer. Et le fait que vous êtes en s'appuyant sur une autre ressource rare (l'imprimerie) devrait garder cette de mise à l'échelle au-delà de ce que votre serveur web peut faire face. Ainsi, vous pourriez avoir l'un des rares cas où la bureautique dans un projet web, fait sens.
Si vous avez déjà Aspose, alors vous pourriez vérifier si elle prend en charge l'impression.
Mais certainement d'accord que dans 99% des cas, l'office de l'interopérabilité est horrible.
Je suis un idiot, je devrais avoir vérifié la Aspose de la documentation! Merci
Aspose.Mots prend en charge l'impression des documents Word (il rend les documents de lui-même presque exactement comme MS Word, mais sans MS Word), mais cette fonctionnalité peut ne pas avoir été disponible en octobre 2008 lorsque vous avez posé cette question.
OriginalL'auteur Joel Coehoorn
Nombre d'imprimantes et d'appareils multifonctions prennent aujourd'hui en charge l'impression des Pdf directement, cela peut une solution à vos problèmes. Tout simplement le fichier PDF envoyé à l'imprimante. En fait, certains même à soutenir l'envoi d'une URL et l'imprimante va alors aller chercher le document et l'imprimer. Lexmark pour sûr, et je pense qu'un peu d'autres fournisseurs ainsi. Ce toujours dire que vous avez à traiter avec le document Word. Word 2007 PDF (avec le add-in installé à partir de Microsoft) et j'ai utilisé cette fonction par programmation avec un grand succès en C#.
Voici le code:
Enfin, si votre appareil ne prend pas en charge l'impression de PDF, alors vous pourriez utiliser Ghostscript ou d'autres outils pour convertir vos PDF en PS ou même PCL. Pas le meilleur car cela signifie un peu de code non managé ou pire des cas, les bombardements et l'exécution de la GS en ligne de commande, cela étant dit, nous le font actuellement dans l'une de nos applications web et il fonctionne bien. En aparté, nous ne le faisons pas pour l'impression, mais plutôt de l'assemblage d'un certain nombre de fichiers Pdf ensemble, mais à la fin il va fonctionner de la même.
OriginalL'auteur Douglas Anderson
La PrintDocument documentation contient un exemple détaillé de l'impression à partir de C#. Le nom de l'imprimante doit pointer sur une imprimante locale ou d'un partage d'imprimante. Voir impression-pour-un-pdf-imprimante-par programmation pour l'impression des documents PDF.
Le 1er exemple illustre un texte (lignes) du document, mais la classe PrintDocument utilise un objet Graphique pour le dessin. Cela signifie que vous pouvez utiliser la puissance du Système.Dessin (GDI+) des espaces de noms.
ah je vois.. mais je suppose format propriétaire(comme MS Word) n'est pas pris en charge à l'aide de cette classe?
Nous parlons de BAS NIVEAU (même au niveau des pixels) ici - dessous les formats de document.
OriginalL'auteur gimel
Quelque chose a faire traduire vos documents Word et PDF en quelque chose que l'imprimante comprend. Normalement, ce serait le Mot lui-même pour l'ancien, et une sorte de visionneuse PDF pour le second. Ces programmes doivent ensuite être chargé sur l'imprimante pour envoyer la sortie.
Un chemin possible serait de sauvegarder les documents en tant que fichiers Postscript. Ensuite, ils pourraient être envoyés à une imprimante compatible Postscript directement à partir d'une application en C#. Ce serait sans doute la façon la plus simple de le faire.
OriginalL'auteur Jeffrey L Whitledge
Il pourrait être utile de 5 minutes pour vérifier les fonctionnalités de sql reporting services. Je l'ai utilisé dans le passé pour rendre les pdf directement à l'impression.
http://blogs.msdn.com/bryanke/articles/71491.aspx
OriginalL'auteur MBoy
Si les types de document en question sont connus pour windows (comme DOC et PDF), vous pouvez utiliser le windows verbes faire?
Codeproject PDF exemple : Automatiser la Conversion en PDF à l'aide de la PDF995 et FreePDF_XP Freeware Imprimantes
MSDN : les Verbes et les Associations de Fichiers
OriginalL'auteur Craig.Nicol
Ce code fonctionne parfaitement
Il utilise Adobe reader pour imprimer
Conseils d'utilisation
1 - n'oubliez pas de fournir votre propre chemin d'installation d'adobe reader
2 - Obtenir le nom de l'imprimante à partir des Propriétés de l'Imprimante que vous souhaitez imprimer avec
utiliser la classe comme ceci:
et la classe est :
Je suis sûr que son travail vous pouvez le contacter à l'aide de la question au lieu de -1
OriginalL'auteur masoud Cheragee