Autor Beitrag
Tobias1
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 454

Win 98, XP Prof
D3 Prof, D2005 Prof
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Mo 17.10.05 14:54 
Normalerweise solltest Du die Druckerfonts im Fontdialog auswählen können.

_________________
Na denn, dann. Bis dann, denn.
Martin1966
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1068

Win 2000, Win XP
Delphi 7, Delphi 2005
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 454

Win 98, XP Prof
D3 Prof, D2005 Prof
BeitragVerfasst: 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.
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1766

Win 7
D7 PE
BeitragVerfasst: Mo 17.10.05 15:03 
Wie du hast nur den Treiber??? Auch keinen Drucker oder was??
alzaimar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 454

Win 98, XP Prof
D3 Prof, D2005 Prof
BeitragVerfasst: Mo 17.10.05 20:16 
Ich hab jetz folgendes gefunden:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 300



BeitragVerfasst: Mo 17.10.05 21:35 
Du kannst einen Bondrucker auch ganz normal über:

ausblenden Delphi-Quelltext
1:
2:
3:
printer.printerindex:=x;
//-1 = standard, sonst nr. des installierten
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

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
var f:textfile;
var s:string;
begin
AssignFile(f,'com1:'); //wie ein DOS Gerät ansprechen
Rewrite(f);
WriteLn(f,'Hello World');
s:=chr(29)#'V0'//steuerseqenz zum Schneiden hier Epson TMT
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.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
//die Datei "Etikett.prn" wird vom Programm zuvor erzeugt, hier sind wirklich alle Steuerzeichen ohne Windowseingriff notwendig / möglich
...
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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 454

Win 98, XP Prof
D3 Prof, D2005 Prof
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 454

Win 98, XP Prof
D3 Prof, D2005 Prof
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 300



BeitragVerfasst: Mi 26.10.05 13:37 
Gib mal nen Beispiel Quelltext von Deiner Druckroutine.
Tobias1 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 454

Win 98, XP Prof
D3 Prof, D2005 Prof
BeitragVerfasst: Mi 26.10.05 14:16 
ausblenden 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(100, 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 454

Win 98, XP Prof
D3 Prof, D2005 Prof
BeitragVerfasst: 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)