Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Impresión
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-08-2017
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.009
Poder: 20
oscarac Va por buen camino
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?
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #2  
Antiguo 28-08-2017
Avatar de darkerbyte
darkerbyte darkerbyte is offline
Miembro
 
Registrado: feb 2005
Posts: 196
Poder: 20
darkerbyte Va por buen camino
Thumbs up 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.
Responder Con Cita
  #3  
Antiguo 29-08-2017
manelb manelb is offline
Miembro
 
Registrado: mar 2017
Posts: 280
Poder: 8
manelb Va por buen camino
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.
Responder Con Cita
  #4  
Antiguo 30-08-2017
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.009
Poder: 20
oscarac Va por buen camino
Cita:
Empezado por darkerbyte Ver Mensaje
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?
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #5  
Antiguo 30-08-2017
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.022
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Están instalados los controladores apropiados?
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Impresion deforme en impresora termica darkerbyte Impresión 9 11-09-2013 11:38:34
Impresion linea por linea en tiquete de caja Livey Impresión 2 21-12-2010 01:21:05
Impresion de comprobantes en impresora termica hmoner Impresión 2 17-03-2010 18:58:53
Impresion en red en impresora termica Kroy K4100 Lyon32 Impresión 0 03-02-2010 17:51:02
Impresión impresora térmica Cañones Impresión 6 08-10-2008 22:38:20


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


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
Copyright 1996-2007 Club Delphi