Entwickler-Ecke
Sonstiges (Delphi) - Standardfonts eines Bondruckers benutzen
Tobias1 - Mo 17.10.05 14:13
Titel: Standardfonts eines Bondruckers benutzen
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!
alzaimar - Mo 17.10.05 14:54
Normalerweise solltest Du die Druckerfonts im Fontdialog auswählen können.
Martin1966 - Mo 17.10.05 14:58
Hallo! :wink2:
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 - 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.
Fabian W. - Mo 17.10.05 15:03
Wie du hast nur den Treiber??? Auch keinen Drucker oder was??
alzaimar - 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.
bpeuthert - 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 - 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!
Raffo - 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 - 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!!!
alzaimar - 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')
Tobias1 - 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.
Raffo - Mi 26.10.05 13:37
Gib mal nen Beispiel Quelltext von Deiner Druckroutine.
Tobias1 - 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.
Tobias1 - 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.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!