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 11-09-2015
Avatar de darkerbyte
darkerbyte darkerbyte is offline
Miembro
 
Registrado: feb 2005
Posts: 196
Poder: 20
darkerbyte Va por buen camino
Question Imprimir en Zebra GK420d con EPL o FastReport

Hola.

Estoy tratando de hacer un modulo para imprimir etiquetas con código de barras desde Delphi XE5, Windows7, Impresora USB Zebra GK240d.

Intenté hacerlo con FastReport pero haciendo impresiones de prueba no detecta correctamente los margenes ni el tamaño de papel. Pensé que tal vez esta mal configurada la impresora o el papel así que diseñe una etiqueta desde Zebradesigner y he mandado a imprimir varias etiquetas consecutivamente y salen perfectas. Aquí pongo una imagen con ambos resultados:



Si puedes asesorarme, quizá en que estoy fallando en cuestiones de FastReport o si me puedes dar ayuda de como usar la etiqueta que ya diseñé desde delphi te estaré eternamente agradecido.
Gracias de antemano por tu valiosisimo tiempo y ayuda.
Responder Con Cita
  #2  
Antiguo 11-09-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Hola

No creo que la impresora sea "especial" y que aunque le mandes "123" te imprima la etiqueta con el codigo de barras para "123"

El zebradesigner que mencionas debe "hacer algo" para que la impresora imprima la etiqueta con su codigo de barras y por eso sale "bien"

La solucion es generar desde FastReport el codigo de barras

Tenes que colocar un componente frxBarCode, elegir el tipo de codigo de barra correspondiente, y colocar el codigo de barras en la propiedad Text
Responder Con Cita
  #3  
Antiguo 11-09-2015
Avatar de darkerbyte
darkerbyte darkerbyte is offline
Miembro
 
Registrado: feb 2005
Posts: 196
Poder: 20
darkerbyte Va por buen camino
Explicación

Hola AgustinOrtu

Te agradezco tu respuesta. Quizá no me expliqué bien. El problema que tengo con FastReport no es la impresión del código de barras, lo cual entiendo perfectamente se tiene que agregar un componente para ello.

El problema es que la impresión sale desfasada de la etiqueta sin importar lo que yo le imprima, sea texto o imágenes. Hice pruebas con QuickReport y me da el mismo resultado.

Inclusive intenté imprimir texto directamente usando el Canvas de Tprinter y, mandando texto a la cordenada (0,0), sale muy arriba, prácticamente esta imprimiendo en el
papel encerado. Claro, moví la coordenada "Y" con Canvas.TextOut(0,8,'COCA COLA 600ML NO RETOR'); y ya sale sobre la etiqueta pero muy a la derecha, justo como QuickReport,
es decir no puedo enviar la impresión mas a la izquierda donde inicia la etiqueta.
Responder Con Cita
  #4  
Antiguo 12-09-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Disculpame leí mal y entendi cualquier cosa

Retiro lo dicho


Releí y te expresaste bien, es un problema de que manda a cualquier lado el texto
Responder Con Cita
  #5  
Antiguo 12-09-2015
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.457
Poder: 20
newtron Va camino a la fama
Hola.

Por la experiencia que tengo con las impresoras de etiquetas tipo Zebra, Godex, etc. creo que lo más sano es usar en tu caso el Zebradesigner para generar una especie de plantilla en fichero de texto y posteriormente usar esa plantilla cambiando los datos variables y enviándolos directamente a la impresora con lo cual no tendrás ningún problema.

Saludos
__________________
Be water my friend.
Responder Con Cita
  #6  
Antiguo 12-09-2015
Avatar de juanelo
juanelo juanelo is offline
Miembro
 
Registrado: sep 2007
Posts: 1.082
Poder: 18
juanelo Va por buen camino
Complementando lo que comento Newtron, te dejo la liga al manual, donde podras estudiar mas a fondo su lenguaje nativo de esta impresora (aunque tambien creo soporta epl).
Saludos
__________________
Ya tengo Firma!
Responder Con Cita
  #7  
Antiguo 15-09-2015
Avatar de darkerbyte
darkerbyte darkerbyte is offline
Miembro
 
Registrado: feb 2005
Posts: 196
Poder: 20
darkerbyte Va por buen camino
Lightbulb Solución

Gracias Newtron y Juanelo.

Esa fue la solución. Explico por si alguien también no tiene experiencia con este tipo de impresoras.

1. Configurar el tamaño del papel en las propiedades de la impresora
2. Con el Zebra Designer diseñar la etiqueta (utilizar campos de texto fijos y códigos de barras fijos, no usar variables)
3. Imprimir en la impresora algunas etiquetas consecutivas para verificar que el tamaño del papel esta correctamente configurado
4. Una vez que la etiqueta quedó a nuestro gusto le damos en imprimir pero activamos la opción "imprimir a archivo" y le damos en imprimir
5. Nos guarda un archivo con la extensión *.prn ese archivo lo abrimos con algun editor de texto y borramos la primera linea.
hasta encontrar ^XA (en lenguaje ZPL con esta instrucción se marca el inicio de un comando)
6. Dale una leida al manual que amablemente dejaron los compañeros para entender la sintaxis del ZPL
7. Busca los campos que vas a reemplazar y te haces una rutina en delphi que esté reemplazando esa información
con lo que vas a mandar a imprimir
8. Utiliza algun metodo para mandar a imprimir comandos a una impresora en RAW, yo uso el que sigue:

Código Delphi [-]
function TLabels.strToRaw(Comando : AnsiString; PrinterName : string): Boolean;
var
   PrinterHandle: THandle;
   N: DWORD;
   DocInfo1: TDocInfo1;
begin
  Result:= FALSE;
  if not OpenPrinter(PChar(PrinterName), PrinterHandle, nil) then
  begin
    ShowMessage('Error de impresora: ' + IntToStr(GetLastError));
    Exit;
  end
  else Try
      with DocInfo1 do
      begin
        pDocName := pChar('Imprimiendo etiqueta');
        pOutputFile:= pChar(#0);
        pDataType := pChar('RAW');
      end;
      if StartDocPrinter(PrinterHandle, 1, @DocInfo1) <> 0 then
      begin
          try
            if StartPagePrinter(PrinterHandle) then
            begin
              try
                Result:=( WritePrinter(PrinterHandle,pChar(comando),Length(comando), N)  );
                if not Result then ShowMessage('Error de impresora: ' + IntToStr(GetLastError));
              finally
                EndPagePrinter(PrinterHandle);
              end;
            end;
          finally
            EndDocPrinter(PrinterHandle);
          end;
      end;
  finally
    ClosePrinter(PrinterHandle);
  end;
end;

Ya nada mas para mandar a imprimir mandas algo como esto:

Código Delphi [-]
var
  sPRN, cadena: string;
  imprimio : Boolean;
  i : integer;
begin
    sPRN:= cbox_impresoras.Text;  // nombre de la impresora 
    cadena:='';
    for i := 0 to memo_raw.Lines.Count-1 do
        cadena := cadena+memo_raw.Lines.Strings[i]+#13+#10;
    imprimio:= Write_RAW_StringToPrinter( AnsiString(cadena), sPRN);
End;

Ya nada mas ten cuidado con los caracteres especiales, hay que reemplazarlos antes de mandar a imprimir:
\AD = ¡ (Admiración inicial)
\A0 = á
\82 = é
\A1 = í
\A2 = ó
\A3 = ú
\A4 = ñ
\A5 = Ñ
\B5 = Á
\90 = É
\D6 = Í
\E3 = Ó
\E9 = Ú
\91 = ü
\9A = Ü
\F8 = °
\1F = \

Simboloes sin problemas:
$ # " ' % ; . , ? ! / * - + [ ] {} & < > ( ) _
Responder Con Cita
  #8  
Antiguo 15-09-2015
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.457
Poder: 20
newtron Va camino a la fama
Estupendo.

Me alegro de que hayas resuelto el problema.

Saludos.
__________________
Be water my friend.
Responder Con Cita
  #9  
Antiguo 29-10-2015
Malparo Malparo is offline
Registrado
 
Registrado: jul 2008
Posts: 7
Poder: 0
Malparo Va por buen camino
Hola Darkerbite,

Estoy con el mismo dilema de impresion y no hemos losgrado imprimir con los codigo EPL...
He estado leyendo lo que mensionas en este foro, pero en la rutina strToRaw, defines un tipo de datos DocInfo1: TDocInfo1, que no entiendo a que se refiere....

No soy muy perito en este tema aun, podrias darme una manito por favor....
Responder Con Cita
  #10  
Antiguo 21-11-2015
Avatar de darkerbyte
darkerbyte darkerbyte is offline
Miembro
 
Registrado: feb 2005
Posts: 196
Poder: 20
darkerbyte Va por buen camino
Ausencia

Cita:
Empezado por Malparo Ver Mensaje
Hola Darkerbite,

Estoy con el mismo dilema de impresion y no hemos losgrado imprimir con los codigo EPL...
He estado leyendo lo que mensionas en este foro, pero en la rutina strToRaw, defines un tipo de datos DocInfo1: TDocInfo1, que no entiendo a que se refiere....

No soy muy perito en este tema aun, podrias darme una manito por favor....
Hola, perdón por la tardanza no había entrado al foro ultimamente.
Si aun necesitas ayuda estoy a tus órdenes. En el software que estoy desarrollando ya puse compatibilidad con lenguaje ZPL y EPL basicamente es lo mismo
solo que las sintaxis son diferentes.
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
Imprimir codigo de barras en Zebra darkerbyte Impresión 7 17-01-2017 20:09:49
Imprimir en Zebra TLP 2844 trex2000 Impresión 6 04-04-2013 06:41:44
Imprimir con Zebra S4M usb emanuelbarrios Impresión 1 03-08-2012 10:51:47
Imprimir en Zebra teletranx Impresión 9 05-06-2012 10:25:03
Imprimir Factura Con Fastreport macro32 Conexión con bases de datos 2 15-04-2008 01:39:03


La franja horaria es GMT +2. Ahora son las 17:26:05.


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