[gelöst]Report soll ESC-Sequenz an den Drucker schicken

11. Mai 2007 09:05

Hallo,

wie kann ich eine ESC-Sequenz an den Drucker schicken?

Dies möchte ich machen um einen bestimmten Druckerfont im Drucker anzusteuern. Dazu muss vorher eine ESC-Sequenz gesendet werden.

Wenn man diese ESC-Sequenz per DOS Befehl (lpr -P raw testdatei)
sendet, dann reagiert der Drucker ordentlich auf den Befehl.
jetzt habe ich gedacht ich erzeuge eine Textbox mit der entsprechenden
ESC-Sequenz, aber in der Textbox erscheint erstmal das ESC-Zeichen als
Viereck....offensichtlich wird das Zeichen nciht richtig erkannt, da es auch als Viereck dann ausgedruckt wird und nicht als Steuersequenz erkannt wird...

Kennt das jemand?
Zuletzt geändert von Pegasus am 14. Mai 2007 14:30, insgesamt 1-mal geändert.

11. Mai 2007 09:15

Hallo Pegasus,

ich glaube nicht, dass es beim Ausdrucken eines Navision-Reports möglich ist eine Escape-Sequenz zu senden. Wenn Du aber einen bestimmten Drucker-Font für den gesamten Report verwenden willst, hilft dir da vielleicht das Property DeviceFontName des Reports weiter.

Gruß
Frank

11. Mai 2007 09:24

ne, das geht nicht, denn der Druckfont ist im Drucker selber und den SOLL man über ESC-Sequenzen ansprechen (per PCL-Sprache)

11. Mai 2007 09:42

evtl. gibts für Deinen Drucker die eingebauten Fonts auch als Font für Windows. Dann sendet Windows bei verwendung derselben auch den entsprechenden Code an den Drucker und schickt den Text dann als Buchstaben und nicht als Grafik. Dann kannst du auch das Property verwenden.

11. Mai 2007 09:47

nein, eben nicht....wir haben gerade eine neue Fontkassette gekauft die man per ESC-Sequenz dazu bringen kann 2D Barcode zu erzeugen und dieser
Font ist eben nicht über Windowsfonts zu ersetzen weil da heftig herumgerechnet werden muss.

Aber wie ist denn eine Lösung mit einem File erzeugen auf festplatte und dann per "DOS-Befehl" copy oder lpr an den drucker schicken?

wie würde man das lösen mit einer Fileerzeugung?

11. Mai 2007 09:57

Wenn das immer der gleiche Code ist, würde ich die Datei mit einem HEXeditor erstellen oder in der DOS-Box mit
Code:
copy con: c:\Druckbefehl

direkt in die Datei tippen. zum schließen dann einfach Strg-Z und Enter

aber wie ich sehe, scheinst du die Datei (testdatei) ja bereits erzeugt zu haben.

Die legst du Zentral auf den Server, wo sie von überall aus mit dem UNC-Namen angesprochen werden kann. im Report setzt du dann an entsprechender Stelle deinen LPR-Befehl rein und gut ist.

11. Mai 2007 10:34

also file erzeugen geht..aber die basics feheln mir wohl....

wie bekomme ich das ESC-Zeichen in die Datei geschrieben? :-(

11. Mai 2007 10:42

ESC-Zeichen: ALT-Taste drücken und halten und dann auf der Nummerntastatur 27 eingeben.

11. Mai 2007 10:46

nö...denn da kommt dann ein Fragezeichen heraus

und das wird auch als Fragezeichen dann letztendlich ausgedruckt...mein einfacher testcode lautet bisher so:


Druckdatei.CREATE('C:\test.prn');
Druckdatei.WRITE('Datamatrix:');
Druckdatei.WRITE('?'+'(s24820T'+'testausgabe');
Druckdatei.CLOSE;
SHELL('lpr', '-S ip-nummer', '-P raw c:\test.prn');

11. Mai 2007 10:51

wie bekomme ich das ESC-Zeichen in die Datei geschrieben?


Var ESC Char
ESC := 27
Druckdatei.WRITE(Format(ESC)+'(s24820T'+'testausgabe');

Gruss

11. Mai 2007 10:54

nein du hast mich falsch verstanden, der Befehl für den Zeichensatz ist doch immer der gleiche, also kannst du einmal auf DOS-Ebene die Datei mit dieser Sequenz erzeugen und diese dann einfach mit dem Shell-Befehl an den Drucker schicken. Wenn die Datei auf einem Serververzeichnis liegt, kannst du sie über den UNC-Namen adressieren, so dass der Report auch bei jedem funktioniert.

11. Mai 2007 11:06

ok..hat geklappt...jetzt druckt er 2D-Barcode aus....wird wahrscheinlich nur noch fleissarbeit sein, die richtige formatierung in PCL-Codes umzuwandeln,

oder kennt jemand einen Reportgenerator der ein Label in PCL-codes umwandelt, die ich dann mit Filewrite in Navision nutzen kann?