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; 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:
$ # " ' % ; . , ? ! / * - + [ ] {} & < > ( ) _