Todo salió en una sola línea, el texto pegado
El síntoma más común de todos, y siempre la misma causa: falta un ^FS. El ^FS cierra el campo actual, y sin él el comando siguiente se lee como más datos del campo anterior — así que tres campos de dirección se vuelven un texto largo y único.
Busca en tu archivo un ^FD que no tenga un ^FS antes del próximo ^FO. Casi siempre es un solo campo, en el medio, generado por un sistema que se olvidó de cerrarlo.
La ñ y los acentos salen mal
“Dirección” se imprime como “Dirección”, o aparece un carácter raro en lugar de la ñ. Falta un ^CI28 al principio de la etiqueta, que es el comando que le dice a la impresora que interprete los datos como UTF-8.
Agrega ^CI28 justo después del ^XA y desaparece. Si el sistema que genera el archivo no puede emitir UTF-8, la otra salida es el ^FH con los bytes escapados en hexadecimal.
El código de barras no se lee
Si el código se ve bien en pantalla y el lector no lo toma, el principal sospechoso no está en el ZPL: es el “ajustar a la página” del diálogo de impresión. Reescala la etiqueta un pequeño porcentaje, y ese porcentaje alcanza para que las barras salgan del ancho equivocado. Imprime siempre al 100% de escala.
La segunda causa es el ^BY, que fija el ancho del módulo para todos los códigos siguientes; un módulo demasiado angosto para la resolución de la impresora hace que las barras se fusionen. La tercera es que el contenido no coincida con la simbología — un EAN-13 exige exactamente 12 dígitos, un Interleaved 2 of 5 exige cantidad par.
La etiqueta sale en blanco o cortada
Una etiqueta en blanco en el conversor casi siempre significa que el bloque no dibuja nada — un ^XA^MCY^XZ, por ejemplo, es mantenimiento de impresora y se descarta a propósito, para que un archivo de cincuenta etiquetas no se vuelva cien páginas.
Cortada es otra cosa: el ^PW o el ^LL del archivo es más chico que el contenido, o la densidad elegida está mal. Sin ^PW ni ^LL el conversor agranda el lienzo hasta que entre todo en vez de recortar, así que una etiqueta cortada normalmente sí trae esos comandos, con valores demasiado chicos.
El código QR sale vacío
El ^BQ no acepta el contenido directo: el ^FD necesita un prefijo propio adelante. La forma es ^FDQA,tu-contenido — donde QA elige el modo automático. Pegar solo la URL después del ^FD genera un QR vacío o un aviso.
Es la trampa que más aparece en códigos QR hechos a mano, porque todos los demás comandos de código de barras aceptan el contenido crudo y solo este no.
Un comando aparece como aviso en pantalla
Un aviso no es una falla del archivo: significa que reconocimos el comando y elegimos no dibujar algo que estaría mal. Cuatro simbologías caen acá (^BK, ^BM, ^BR y ^BZ), y el campo se saltea en lugar de salir un código que el lector no leería.
Los comandos de equipo — ^MD de oscuridad, ^MT de tipo de material, ^PR de velocidad — se aceptan en silencio y no cambian la imagen, porque un renderizador no tiene cabezal térmico. Eso es el comportamiento correcto y no es un problema de tu archivo. La referencia de comandos indica cuáles son cuáles.