Yo estoy a punto de iniciar un proyecto que incluira estas impresoras y lo había pensado mucho por el problema que tiene nuestro amigo el cual me resulta una completa ironía: Es mas díficil imprimir de la forma más simple.
Por ahí vi que te recomendaro usar secuencias de escape, lo cual me parece es tu mejor solución pero tienes que considerar que:
- con el Writeln de Delphi las secuencias de escape (#27) se descartan antes de llegar a la impresora (más bien lo hace windows) por lo que no importa que tantas secuencias mandes antes del texto, a la impresora solo llega el texto "pelón".
-Tendrás que imprimir directamente a la impresora, pero sin pasar por Windows
Lo puedes hacer de esta forma:
Código Delphi
[-]
Procedure PWrite(s:String);
var PT :Integer;
P :Pchar;
Begin
PT := FileOpen('lpt1',fmOpenWrite ); P := PChar( s ); FileWrite(PT,P^,length( s )); FileClose(PT);end;
Uso:
const pNewLn = #10 +#13; pBold = #27 + 'E'; pBoldOff = #27 + 'F'; pDouble = #27 + 'W' +'1'; pDoubleOff = #27 + 'W' +'0'; pFormSize = #27 + 'C' +#10; pFF= #12;
begin
PWrite( pForm );
PWrite( pBold + 'Pagina 1 ' +pBoldOff);
end;
Es un código muy simple pero de esta forma las secuencias de escape si son pasadas tal cual a la impresora. Ojo, como no estamos usando Windows para ello, no tenemos ninguna función del driver disponible por lo que tendremos que checar por nuestra cuenta si hay papel, tinta, etc. Pero para el caso de impresoras de ticket no es tan dificil.
La colocación de coordenadas la puedes usar con la secuencia de escape correspondiente (no me acuerdo ahorita cual es) hay una para mover la cabeza en X y otra en Y, tambien puedes simular esto enviando saltos de línea para las Y e imprimiendo espacios en blanco para las X.
A mi me funcionó de maravilla y para este tipo de impresión se me hace la forma mas sencilla. Además no importa si tienes el driver o no, de hecho funciona aunque no tengas ninguno instalado en Windows.
Ojala te sirva