Matrice de points d'impression en C#?
Je suis en train d'imprimer sur des imprimantes matricielles (différents modèles) de C#, actuellement je suis à l'aide de l'API Win32 (vous pouvez trouver beaucoup d'exemples en ligne des appels envoyer des codes d'échappement directement à l'imprimante de mon application en C#. Cela fonctionne très bien, mais...
Mon problème est que je suis de générer les codes d'échappement et en ne s'appuyant pas sur les fenêtres du système d'impression l'impression peut pas être envoyé à toute "normale", des imprimantes ou des choses comme PDF les pilotes d'impression. (C'est maintenant l'origine d'un problème que nous essayons d'utiliser l'application sur un 2008 Terminal Server à l'aide de Easy Print [XPS])
La question est:
Comment puis-je imprimer des documents formatés (factures pré-imprimé stationnaire) pour imprimantes matricielles (Epson, Oki et Panasonic... différents modèles) de C# n'utilisant pas l'impression directe, les codes d'échappement etc.
**Juste pour préciser, je suis en train d'essayer des choses comme GDI+ (Système de.De dessin.Impression) mais le problème est qu'il est très difficile, de faire les choses à la ligne comme l'ancien code. (L'ancien code envoyé les caractères directement à l'imprimante en contournant le pilote windows.) Toutes les suggestions comment les choses pourraient être améliorées afin qu'ils puissent utiliser GDI+, mais encore en ligne comme l'ancien code n'?
OriginalL'auteur Dale | 2008-10-29
Vous devez vous connecter pour publier un commentaire.
Vous devriez probablement utiliser un outil de reporting pour faire des modèles qui permet, à vous ou aux utilisateurs de positionner correctement les champs en ce qui concerne la pré-imprimé, papier à lettres.
À l'aide des imprimantes matricielles, en gros, vous avez à travailler dans un des 2 modes:
La première utilisation est largement obsolète sous Windows car il n'offre pas beaucoup de la manière de contrôle de la sortie, et à chaque imprimante ayant ses propres caractéristiques, il devient lourd et difficile pour le logiciel de prédire et de la position des choses sur la page (pas de WYSIWYG).
La seconde utilise simplement un graphique de la page de paradigme qui rend le positionnement du texte et des graphiques indépendants de réelles capacités de l'imprimante.
Lors de l'utilisation de pré-imprimé papeterie, votre travail s pour positionner correctement les données de la page.
Ce faire part est la consommation de ressources et la création de la disposition dans le code n'est certainement pas recommandé puisque vous serez coincé avec le code pour modifier votre imprimante, format de page ou de papeterie imprimés changement.
Le mieux est de simplement utiliser la fonction d'impression standard modèle offert par .Net et un outil de reporting qui permet de définir des modèles et des modèles où le bon texte et les graphiques seront positionnés, et puis ce lecteur de code.
Visual Studio est livré avec une version de Crystal Reports, mais il existe d'autres, à l'amélioration des systèmes de notification (j'utilise celui de developer express par exemple), certains d'entre eux sont même gratuit.
OriginalL'auteur Renaud Bompuis
De mon expérience, il est plus facile d'utiliser deux sortes de rapports pour les mêmes données:
type file.txt > lpt1
ou en le sélectionnant dans le code par défaut de l'imprimante et à l'aide deNOTEPAD /P file.txt
) - voir cette page pour plus d'méthodes d'impression.Car il n'est pas rare d'acheter le bon type de l'imprimante pour le bon type de rapport, cette approche a l'avantage de laisser le client décider: imprimante matricielle pour les rapports texte en A3/A4 format papier (généralement pour le service de la comptabilité) ou laser/imprimante à jet d'encre pour des rapports graphiques.
OriginalL'auteur alexandrul
je ne sais pas comment utiliser la séquence d'Échappement en C#. Mais j'ai tout de Séquence d'Échappement pour imprimante Générique /Texte Seulement. Espérons que cela aide.
D'Impression Générique De La Séquence D'Échappement
1) Définir L'Interligne
a) de 1/8 de pouce de 27,48
b) 1/6 pouces - 27,50
2) Sélectionnez Projet De Qualité
a) 27,120,0 /27,120,48
3) La Qualité De Lettre
a) 27,120,1 /27,120,49
4) Double Hauteur
a) 27,119,n
i) n = 1 Sur
ii) n = 0 Off
5) Impression Bidirectionnel
a) 27,85,n
i) 0 - à la Fois Moyen
ii) 1 - d'Une Manière
6) Augmenter l'espace de caractère
a) 27,32,n (Augmentation de n /12 pouces)
7) Sélectionnez La Police En Gras
a) 27,69
8) D'Annuler La Police En Gras
a) 27,70
9) Sélectionnez Une Police En Italique
a) 27,52
10) D'Annuler L'Italique
a) 27,53
11) Sélectionnez
a) 10cpi 27,8
b) 12cpi 27,77
c) 15cpi 27,103
d) 18cpi 27,103
12) Fixer La Marge De Droite
a) 27,81,n
13) Ensemble De La Marge De Gauche
a) 27,108,n
14) Alimentation
a) 12
15) États De L'Impression
a) 0F Sur
b) 12
16) Double Strike Impression
a) 27,71
17) D'Annuler La Grève De L'Impression
a) 27,72
18) Sous la ligne
a) 27,45,0 Off
b) 27,45,1 Sur
19) Double Largeur
a) 27,84,0 Off
b) 27,84,1 SUR
OriginalL'auteur
D'abord Convertir la Séquence des commandes de caractères pour ensuite passer à l'imprimante
Exemple La Police En Gras 27,69
chaîne.Format("{0}{1}",Convertir Des.ToChar(27),De Convertir.ToChar(69));
Peut-être un peu plus courte que:
chaîne.Format("{0}{1}",(char)(27),(char)(69));
OriginalL'auteur
Prendre un coup d'oeil à la Système.De dessin.L'impression espace de noms.
OriginalL'auteur Tim Robinson
Si votre imprimante le pilote à installer, vous pouvez utiliser Windows normal du système d'impression. La plupart des imprimantes, y compris les POS, ont du travail Windows pilotes disponibles. (La plupart des imprimantes matricielles Epson sont compatibles, de toute façon.) Certains POS pilotes d'imprimante permettre l'envoi des codes d'échappement directement à l'imprimante (en utilisant des polices de caractères spéciales); probablement vous n'avez pas besoin d'une telle fonctionnalité.
Si ce n'est pas le cas, alors vous pouvez ajouter imprimante Générique/Texte Seulement (pilote), avec l'aide de l'Assistant Ajout d'Imprimante. Une fois cela fait, vous pouvez configurer certaines commandes (les séquences d'échappement) pour elle - taille de la Police 10/12/17, Gras on/off, Soulignent on/off, d'emploi start/stop, alimentation papier et la taille de sélectionner.
Je suis à l'aide d'imprimante Générique associé avec le FICHIER de port pour tester différents rapports pour les imprimantes points de vente, il est facile de regarder fichier texte pour valider les numéros en version imprimée. Bien sûr, pour la mise en forme pilote d'imprimante spécifique est nécessaire.
Je pense que c'est la bonne réponse: vous ne voulez pas de cibler une imprimante, vous souhaitez à tous de sorte que vous êtes mieux l'impression que tout le monde ces jours-ci au lieu de simplement envoyer les caractères sur la ligne de l'imprimante (LPT). De cette façon, votre imprimante est un périphérique graphique.
Je pense que le Texte du pilote d'imprimante est votre meilleure option. Vous devriez également considérer la vitesse, l'impression en mode graphique sur une imprimante matricielle est beaucoup plus lent que d'utiliser des codes d'échappement. L'inconvénient, c'est l'incompatibilité avec les imprimantes, mais avec des formulaires préimprimés, à l'aide d'une autre imprimante n'est pas beaucoup d'utilisation.
OriginalL'auteur Arvo
Il semble que ce que j'aimerais faire, c'est pas possible.
Mon choix pour l'impression de ne sont pas gérés directement à l'imprimante d'impression (à l'aide de winspool.drv) qui me permet de faire ce que j'aime à l'imprimante, et me permet de facilement ligne.VB.NET Exemple Ou je peux utiliser GDI+ (Système de.De dessin.Impression) ce qui est compliqué à obtenir des choses de line-up mais fonctionne avec les imprimantes matricielles comme PDF et XPS imprimantes.
OriginalL'auteur Dale
Vous pouvez vous référer cette http://www.codeproject.com/Articles/29709/Line-Printer-Class-in-C
espérons helpd
OriginalL'auteur IlPADlI