Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   Impresion linea por linea en Impresora Termica (https://www.clubdelphi.com/foros/showthread.php?t=92200)

oscarac 24-08-2017 16:41:10

Impresion linea por linea en Impresora Termica
 
buenos dias

tengo una rutina de impresion (que la saque de aqui) y que me funciona bien en las impresoras matriciales que es esta de aqui

Código Delphi [-]
function WriteRawDataToPrinter(PrinterName: String; Str: String): Boolean;
var
  PrinterHandle: THandle;
  DocInfo: TDocInfo1;
  i: Integer;
  B: Byte;
  Escritos: DWORD;
begin
  Result:= FALSE;
  if OpenPrinter(PChar(PrinterName), PrinterHandle, nil) then
  try
    FillChar(DocInfo,Sizeof(DocInfo),#0);
    with DocInfo do
    begin
      pDocName:= PChar('Printer Test');
      pOutputFile:= nil;
      pDataType:= 'RAW';
    end;
    if StartDocPrinter(PrinterHandle, 1, @DocInfo) <> 0 then
    try
      if StartPagePrinter(PrinterHandle) then
      try
        while Length(Str) > 0 do
        begin
          if Copy(Str, 1, 1) = '\' then
          begin
            if Uppercase(Copy(Str, 2, 1)) = 'X' then
              Str[2]:= '$';
            if not TryStrToInt(Copy(Str, 2, 3),i) then
              Exit;
            B:= Byte(i);
            Delete(Str, 1, 3);
          end else B:= Byte(Str[1]);
          Delete(Str,1,1);
          WritePrinter(PrinterHandle, @B, 1, Escritos);
        end;
        Result:= TRUE;
      finally
        EndPagePrinter(PrinterHandle);
      end;
    finally
      EndDocPrinter(PrinterHandle);
    end;
  finally
    ClosePrinter(PrinterHandle);
  end;
end;


el problema esta que cuando lo utilizo en la impresora termica, la impresion sale linea por linea y no de golpe, como se acostumbra a imprimir en esas impresoras.

la idea que tengo es crear un reporte (con quickreport) elaborar el ticket y mandarlo a imprimir de forma directa
la pregunta es, como hago para que se haga el corte de papel, como mando la secuencia de escape
Código Delphi [-]
  WriteRawDataToPrinter('Epson',#27+'m' + Chr(10) + Chr(13));

en el quickreport

se entiende?
alguien tiene una solucion?

darkerbyte 28-08-2017 22:28:53

Hay varias maneras
 
Hay varias maneras

La más facil, si es impresora térmica instalate el driver. Genera la información y metela en un RichEdit y usa el método print del richedit.
Con eso debe imprimir bien y te hará el corte de papel de manera automática. (No olvides especificar la impresora en el objeto Printer)

La segunda manera es hacerlo imprimiendo (pintando) directamente sobre el objeto Printer

La tercera es instalar la impresora como "solo texto" y mandarle los datos en formato raw
Es la que menos te recomiendo porque no podras imprimir gráficos. Pero es muy rápida.

Yo en general ocupo los tres métodos de manera que puedas trabajar con cualquier miniprinter que le instalen al equipo sin importar
modelo, driver, tipo, puerto etc.

manelb 29-08-2017 07:26:54

Nosotros utilizamos el quickreport para imprimir tickets y del corte de papel i de la apertura del cajon portamonedas se encarga el driver de la impresora.
Normalmente puedes seleccionar corte por documento o al final de la impresión y en el caso del cajón, apertura antes o después de imprimir.
De esta forma no hace falta utilizar códigos de escape.

oscarac 30-08-2017 00:13:00

Cita:

Empezado por darkerbyte (Mensaje 520625)
Hay varias maneras

La más facil, si es impresora térmica instalate el driver. Genera la información y metela en un RichEdit y usa el método print del richedit.
Con eso debe imprimir bien y te hará el corte de papel de manera automática. (No olvides especificar la impresora en el objeto Printer)

La segunda manera es hacerlo imprimiendo (pintando) directamente sobre el objeto Printer

La tercera es instalar la impresora como "solo texto" y mandarle los datos en formato raw
Es la que menos te recomiendo porque no podras imprimir gráficos. Pero es muy rápida.

Yo en general ocupo los tres métodos de manera que puedas trabajar con cualquier miniprinter que le instalen al equipo sin importar
modelo, driver, tipo, puerto etc.

tienes ejemplos?

Casimiro Notevi 30-08-2017 08:57:36

¿Están instalados los controladores apropiados?


La franja horaria es GMT +2. Ahora son las 11:01:58.

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