Autor |
Beitrag |
Tobias1
      
Beiträge: 454
Win 98, XP Prof
D3 Prof, D2005 Prof
|
Verfasst: Mo 17.10.05 14:13
Hi,
ich möchte einen Text mit einem Bondrucker drucken. Ich kann dies natürlich einfach mit Printer.BeginDoc; und dann mit Canvas Text erstellen (Printer.Canvas.TextOut), aber so wird ja der Text als Bild gesendet, was unnötig Übertragungs-Zeit braucht.
Kann man auch direkt Text an den Drucker schicken, write oder so?
Danke schonmal!
Einloggen, um Attachments anzusehen!
_________________ Auch das schlechteste Buch hat seine gute Seite: die letzte. (John Osborne)
|
|
alzaimar
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: Mo 17.10.05 14:54
Normalerweise solltest Du die Druckerfonts im Fontdialog auswählen können.
_________________ Na denn, dann. Bis dann, denn.
|
|
Martin1966
      
Beiträge: 1068
Win 2000, Win XP
Delphi 7, Delphi 2005
|
Verfasst: Mo 17.10.05 14:58
Hallo!
Schau doch mal in das Druckerhandbuch. Dort müsste eigentlich beschrieben sein welchen Steuerzeichen du an den Druckersenden musst um Text auszudrucken und auch den Font zu wechseln.
Lg Martin
|
|
Tobias1 
      
Beiträge: 454
Win 98, XP Prof
D3 Prof, D2005 Prof
|
Verfasst: Mo 17.10.05 15:01
Ich hab bloß den Treiber (ausm Internet runtergeladen).
Die Frage war ja wie ich was drucken kann:
Kann man das mit assignfile machen.
der Drucker ist an COM1 angeschlossen.
_________________ Auch das schlechteste Buch hat seine gute Seite: die letzte. (John Osborne)
|
|
Fabian W.
      
Beiträge: 1766
Win 7
D7 PE
|
Verfasst: Mo 17.10.05 15:03
Wie du hast nur den Treiber??? Auch keinen Drucker oder was??
|
|
alzaimar
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: Mo 17.10.05 15:05
Wenn Du den Treiber installiert hast, dann sollten die Druckerfonts im Font-Auswahldialog sichtbar sein. Wenn Du einen Text mit diesem Font per Printer.Canvas an den Drucker schickst, dann macht der Druckertreiber daraus schon das Richtige. Nur wenn der Treiber zu blöd ist (was durchaus vorkommt), musst Du dich noch mit ESC-Sequenzen rumschlagen.
_________________ Na denn, dann. Bis dann, denn.
|
|
bpeuthert
      
Beiträge: 18
|
Verfasst: Mo 17.10.05 15:40
Bei AssginFile bin ich mir nicht sicher, sollte aber funktionieren. Ansonsten nimm CreateFile, da ist in dem SDK auch der Zugriff auf die Ports zumindest erwähnt. Alles was du dann per WriteFile in die "Datei" schreibst wird gedruckt (Es sei denn du erwischt eine Steuersequenz).
Edit:
Wenn du den Treiber installiert hast kann es zu Problemen kommen. Wenigstens den Port solltest du im Treiber bzw. in dem installierten Drucker ändern. Sonst bekommst keinen Zugriff. Außerdem musst du Baudrate usw. richtig Einstellen sonst klappt auch nix.
|
|
Tobias1 
      
Beiträge: 454
Win 98, XP Prof
D3 Prof, D2005 Prof
|
Verfasst: Mo 17.10.05 20:16
Ich hab jetz folgendes gefunden:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| var MyFile: TextFile; begin AssignPrn(MyFile); Rewrite(MyFile); Writeln(MyFile, 'Dieser Text wird gedruckt.'); System.CloseFile(MyFile); end; |
Kann man auch AssignFile anstatt AssignPrn nehmen?
Worin besteht der Unterschied?
Wie müsste es dann heißen wenn man es an COM1 schickt?
Kann man bei dem genannten Code die Schriftart ändern?
Danke!
_________________ Auch das schlechteste Buch hat seine gute Seite: die letzte. (John Osborne)
|
|
Raffo
      
Beiträge: 300
|
Verfasst: Mo 17.10.05 21:35
Du kannst einen Bondrucker auch ganz normal über:
Delphi-Quelltext 1: 2: 3:
| printer.printerindex:=x; richedit1.print(''); |
Hat den Vorteil, wenn der Druckertreiber auf deutsch gestellt ist, die Umlaute funzen. Nicht alle Drucker schneiden damit automatisch.
Bei der Direktmethode sollten die ESC Sequenzen ausfindig gemacht werden und das kann für jeden Drucker anders sein
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| var f:textfile; var s:string; begin AssignFile(f,'com1:'); Rewrite(f); WriteLn(f,'Hello World'); s:=chr(29)#'V0'; WriteLn(f,s); CloseFile(f); |
Dann könnte man noch die "DOS" Methode anführen, in der ein File geschrieben wird und dieses per ShellExecute an den Drucker kopiert wird.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| ... AssignFile(f,'c:\Etikett.bat'); Rewrite(f); i:=ET_DruckerIndex; writeln(f,'@echo off'); writeln(f,'echo Drucke Etiketten nach LPT'+inttostr(i)); WriteLn(f,'copy c:\Etikett.prn lpt'+inttostr(i)+':'); |
|
|
Tobias1 
      
Beiträge: 454
Win 98, XP Prof
D3 Prof, D2005 Prof
|
Verfasst: Mo 24.10.05 21:08
Danke mal; ich glaub ich weiß jetz wie ich schnell drucke:
Bei Word gibt es im Schriftartenmenü die Schriften FontA21 FontA22 FontB12 etc.
bloß tauchen die Schriften niergens im FontDialog z.B bei Delphi auf, und sie sind auch nicht in Systemstrng/Schriftarten drin.
Wie kann ich trotzdem mit denen drucken??
Danke schonmal!!!
_________________ Auch das schlechteste Buch hat seine gute Seite: die letzte. (John Osborne)
|
|
alzaimar
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: Mo 24.10.05 21:33
Kannst Du zur Laufzeit nicht einfach den Fontnamen in Font.Name eintragen? Ich meine, ich hab das so mal gemacht. Auf meinem Entwicklungsrechner hatte ich den Treiber für einen EPSON nicht drauf, musste den Bon aber abschnippeln, dazu gibts einen 'Control' Font, der zwar nicht viel taugte, aber immerhin das Schnippeln funktioniert.
Probiers mal, hab mir auch die Haare ausgerissen, letztendlich habe ich per Quickreport ein schickes Label gedruckt. Das geht recht flott (Parallelport) und der Kunde hat endlich mal ein schickes Label ('Corporate Identity')
_________________ Na denn, dann. Bis dann, denn.
|
|
Tobias1 
      
Beiträge: 454
Win 98, XP Prof
D3 Prof, D2005 Prof
|
Verfasst: Mi 26.10.05 13:19
Wenn ich in Word die Bondruckerschriftarten(siehe Anhang) nehm, "rast" der Drucker und der Text wird sauber dargestellt.
Wenn ich aber in meinem Programm (mit Printer .... font.name) drucke ist das Bild schlecht (da ich 90x90dpi eingestellt hab) und es dauert lange.
Was macht Word da anderst?
Ich tippe, dass Word bloß den Text und nicht die Leinwand übergibt.
Einloggen, um Attachments anzusehen!
_________________ Auch das schlechteste Buch hat seine gute Seite: die letzte. (John Osborne)
|
|
Raffo
      
Beiträge: 300
|
Verfasst: Mi 26.10.05 13:37
Gib mal nen Beispiel Quelltext von Deiner Druckroutine.
|
|
Tobias1 
      
Beiträge: 454
Win 98, XP Prof
D3 Prof, D2005 Prof
|
Verfasst: Mi 26.10.05 14:16
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| Printer.BeginDoc; SetMapMode(Printer.Canvas.Handle, MM_LOMETRIC); printer.Canvas.Font.Size:=19; printer.Canvas.Font.Name:='FontA12'; Printer.Canvas.TextOut(10, 0, datetostr(date)+' '+timetostr(now)); Printer.endDoc; |
apropos:
printer.Canvas.Font.Size:=9.5; geht ja gar nicht obwohl ich es laut den Bondruckfonts verwenden muss.
_________________ Auch das schlechteste Buch hat seine gute Seite: die letzte. (John Osborne)
|
|
Tobias1 
      
Beiträge: 454
Win 98, XP Prof
D3 Prof, D2005 Prof
|
Verfasst: Mi 26.10.05 14:31
Hab das Problem gefunden:
Ich darf SetMapMode(Printer.Canvas.Handle, MM_LOMETRIC); nicht verwenden, warum auch immer!
Was mich noch interessieren würde, wie man die Schriftart 9,5 nimmt.
_________________ Auch das schlechteste Buch hat seine gute Seite: die letzte. (John Osborne)
|
|