Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   Imprimir etiqueta con codigos escape (https://www.clubdelphi.com/foros/showthread.php?t=33806)

comba 17-07-2006 19:55:02

Imprimir etiqueta con codigos escape
 
Hola a todos

Siempre he utilizado para imprimir etiquetas con su codigo de barras y demas, quickreport y delphi 6. Hasta ahora todo funcionaba bien.

Pero ahora tengo que hacerlo através de los codigos de escape de la impresora. (Zebra Lp 2844).

Tengo los códigos en un fichero txt.

FK"*"
N
B60,8,0,2C,3,8,232,N,"0000001231542361416795001001"
A100,254,0,4,1,1,N,"000000-000000-1416795001-123564"
A540,300,0,3,1,1,N,"C.POSTAL"
.
.

Pero no se como enviarselo a la impresora.
He buscado por muchos sitios incluyendo el manual de programación de dicha impresora pero no encuentro como enviar una linea y que la impresora la interprete.

Es verdad que si desde ms-dos le digo print etiqueta.txt me la imprime pero por el puerto LPT1 y tengo la necesidad de imprimirla por el USB.

Si alguién me puede dar una pista. Gracias.

nemesio 17-07-2006 20:09:12

Si buscas en los foros, vas a encontrar hilos que hablan de como eviar un texto a una impresora por un puerto USB. Una de las que recuerdo haber leído es que compartas la impresora y luego en vez de escribir el Puerto, colocas el nombre que tiene la impresora compartida.

Suerte.

comba 17-07-2006 23:23:52

Ya lo intenté pero no me funcionó.

Gracias.

nemesio 18-07-2006 00:55:42

Bueno, yo he impreso de esa manera y me ha funcionado. Déjame hacer unas pruebas y cualquier cosa te aviso.

Suerte.

basti 18-07-2006 01:01:20

Puedes usar el procedimiento AssignPrn y sacando el nombre de TPrinter:

Código Delphi [-]
  var
    f : textfile;

begin
  pr := TPrinter.Create;
  printer.PrinterIndex := pr.Printers.IndexOf('aquí el nombre de la impresora');
  AssignPrn(f);
  Rewrite(f);

  write(f, 'lo que quieras imprimir');


  closeFile(f);
  pr.free;
end;

comba 03-08-2006 19:43:04

Solucionado y agradecido
 
De esta forma envío el archivo con los códigos de escape y funciona muy bien y muy rápido.


procedure TForm2.PrintFile(const sFileName: string);
const
iBufferSize = 32768;
var
Count, BytesWritten: Cardinal;
hPrinter, hDeviceMode: THandle;
sDevice : array[0..255] of char;
sDriver : array[0..255] of char;
sPort : array[0..255] of char;
DocInfo: TDocInfo1A;
f: File;
pBuffer: Pointer;
begin
Printer.PrinterIndex := etiqueta.ItemIndex ;
Printer.GetPrinter(sDevice, sDriver, sPort, hDeviceMode);
if not WinSpool.OpenPrinter(@sDevice, hPrinter, nil) then
exit;
DocInfo.pDocName := 'Etiqueta;
DocInfo.pDatatype := 'RAW';
DocInfo.pOutputFile := nil;

if StartDocPrinter(hPrinter, 1, @DocInfo) = 0 then
begin
WinSpool.ClosePrinter(hPrinter);
exit;
end;
if not StartPagePrinter(hPrinter) then
begin
EndDocPrinter(hPrinter);
WinSpool.ClosePrinter(hPrinter);
exit;
end;
System.Assign(f, sFileName);
try
Reset(f, 1);
GetMem(pBuffer, iBufferSize);
while not eof(f) do
begin
Blockread(f, pBuffer^, iBufferSize, Count);
if Count > 0 then
begin
if not WritePrinter(hPrinter, pBuffer, Count, BytesWritten) then
begin
EndPagePrinter(hPrinter);
EndDocPrinter(hPrinter);
WinSpool.ClosePrinter(hPrinter);
FreeMem(pBuffer, iBufferSize);
exit;
end;
end;
end;
FreeMem(pBuffer, iBufferSize);
EndDocPrinter(hPrinter);
WinSpool.ClosePrinter(hPrinter);
finally
System.Closefile(f);
end;
end;

procedure TForm2.SpeedButton2Click(Sender: TObject);
begin
PrintFile('C:\........\fichero.txt');
end;

PepeLolo 05-08-2006 12:11:49

Cita:

Empezado por comba
Hola a todos

Siempre he utilizado para imprimir etiquetas con su codigo de barras y demas, quickreport y delphi 6. Hasta ahora todo funcionaba bien.

Pero ahora tengo que hacerlo através de los codigos de escape de la impresora. (Zebra Lp 2844).

Tengo los códigos en un fichero txt.

FK"*"
N
B60,8,0,2C,3,8,232,N,"0000001231542361416795001001"
A100,254,0,4,1,1,N,"000000-000000-1416795001-123564"
A540,300,0,3,1,1,N,"C.POSTAL"

uff.., que pena, :o he utilizado esa impresora hece un mes en un proyecto en el curro, si el lunes me lo recuerdas te adjunto el código.:)

un saludo.


La franja horaria es GMT +2. Ahora son las 18:41:32.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi