Imprimer sans aller à la page [Delphi] - Delphi/Pascal - Programmation
Marsh Posté le 03-04-2002 à 17:17:36
Beh tu fais toute T étiquettes avant de faire 1 EndDoc...
(je vois pas bien ce que tu veux faire ds l'absolu)
Marsh Posté le 04-04-2002 à 10:13:57
oui, mais si je ne veux imprimer qu'une seule étiquette ?
(j'ai du papier continu dans une bonne vieille imprimante matricielle )
bref je voudrai qu'il me sorte qu'un bout de page de l'imprimante
Marsh Posté le 04-04-2002 à 18:36:30
Beh là C + compilqué....
enfin vais voir... ( )
Marsh Posté le 04-04-2002 à 22:22:26
G ptet une solution en changeant les valeurs de
TPrinter.PageHeight et TPrinter.PageWidth par exemple en les mettant à la taille d'1 étiquette.
Voilou tien moi au courant
Marsh Posté le 05-04-2002 à 14:38:19
pour l'instant j'arrive à n'imprimer que sur 3 pouces de long en reglant les param interne de l'imprimante et en mettant le papier en format carte postale, mais ça fait donc 2 étiquettes
je vais essayer ta méthode
sinon tu saurais pas comment envoyer du texte à une imprimante sans passer par un canvas, parce que sinon une méthode pourrait d'être d'envoyer les commandes ESC/P2 à l'imprimante pour gérer moi meme la taille de page, mais cette couillon, mais commande elle essayer de les imprimer à la place de s'en servir (ESC ça fait un joli carré )
Marsh Posté le 05-04-2002 à 14:56:33
Pour envoyer les codes internes de l'imprimante, faudrait (je pense) écrire directement sur le port parallèle physique sur laquelle elle est, sinon le pilote Windows va l'intercepter et l'interpréter comme un caractère inscriptible ou non (c'est pas son affaire) tant que c'est pas Cr ou Lf.
Marsh Posté le 05-04-2002 à 15:28:44
en fait j'ai trouvé ça dans l'aide de delphi :
Citation : Question : |
reste plus qu'à trouver comment mettre ça en pratique sur mon étiquette, et aussi comment copier un fichier sur un port
cai pas gagné
Marsh Posté le 05-04-2002 à 16:10:47
Pour envoyer un ficheir texte sur une imprimante sous DOS, on fait
COPY fichier.txt > LPTx (me semble-t-il, de mémoire) si LPTx est le port de l'imprimante (généralement x = 1. J'avais LPT2 et LPT3 sur ma machine, mais l'un d'eux ne servait plus trop : EPSON à aiguilles)
Je ne sais plus s'il faut mettre : à la fin
COPY c:\toto\fichier.txt > LPTx: (encore un trou de mémoire), faut essayer si le dos crée un fichier LPT1 ....
Marsh Posté le 05-04-2002 à 19:54:35
et avec Delphi on fait ça comment ?
Marsh Posté le 06-04-2002 à 12:01:13
CARBON_14 a écrit a écrit : Pour envoyer les codes internes de l'imprimante, faudrait (je pense) écrire directement sur le port parallèle physique sur laquelle elle est, sinon le pilote Windows va l'intercepter et l'interpréter comme un caractère inscriptible ou non (c'est pas son affaire) tant que c'est pas Cr ou Lf. |
Pas possible d'écrire direct sur le port avec des sys comme win2k et XP (ptet même ME et win98) Faut forcément passer par windows sinon il va pas aimer du tout....
( )
Marsh Posté le 06-04-2002 à 13:26:34
Non poire, y a moyen d'écrire sur le port directement, mais faut le demander très gentillement, tu peux pas faire une interruption comme un sauvage
Y a des examples qui doivent trainer sur le web, mais je sais pas si c'est la meilleure chose à faire quand même.
Marsh Posté le 06-04-2002 à 14:23:38
Buitoni a écrit a écrit : Non poire, y a moyen d'écrire sur le port directement, mais faut le demander très gentillement, tu peux pas faire une interruption comme un sauvage Y a des examples qui doivent trainer sur le web, mais je sais pas si c'est la meilleure chose à faire quand même. |
Alors vraiment trés gentiment....
Les trucs fait pour DOS en C/C++ font des trucs marrant.... Genre Windows t'empéche d'accéder directement aux ports.... (protégé quoi )
Pour ce qui est de l'impression je ferais 3/4 tests quand j'aurais le temps...
Marsh Posté le 06-04-2002 à 18:22:35
ben dans la doc de l'imprimante y a les codes d'échappement à lui envoyer en mode direct, et dans la doc de delphi ils disent qu'il fo copier le fichier ascii directement sur le port de l'imprimante, donc ça doit être faisable, le truc c que je sais pas comment
Marsh Posté le 08-04-2002 à 16:51:47
c bon, c trouvé
il fallait faire
Id:=CreateFile(@Ca[1],GENERIC_WRITE,0,Nil,OPEN_EXISTING,0,0);
avec dans Ca le nom du port de l'imprimante
et après d'écrire dans Id comme dans un fichier
Marsh Posté le 08-04-2002 à 16:54:54
Pour le premier paramètre je mettrais plutôt PChar(Ca)
Sinon tu risques d'avoir des problèmes à aller prendre l'adresse d'une chaîne de cette manière.
Marsh Posté le 10-04-2002 à 11:30:33
ah, ben a priori ça marche bien comme ça, y a pas eu de pb
Marsh Posté le 12-10-2004 à 11:46:09
Bonjour,
je me permet de remonter ce message qui a + de 2 ans (mode recherche on) pour vous demander de m aider.
J avoue que ce message ne m a pas vraiment aider.
Je m'explique : a la fin du canvas il y a un enddoc qui gere automatiquement un saut de page. Je ne veux plus de ce saut de page en fait. J'utilisais Rave Report aussi mais il faisait aussi automatiquement un saut de page.
Cela me gene car j ai aussi une imprimante a aiguille avec recharge tracteur(une epson LX-300) et je ne sais pas comment le gérer.
Merci de votre aide
(c est très important j ai le patron sur le dos car le client trouve ca long )
Marsh Posté le 03-04-2002 à 17:13:23
Je débute
en gros je veux pouvoir imprimer une étiquette sans qu'il saute après l'espace restant d'une feuille A4