Los comandos ZPL que la conversión ignora, y por qué
Pediste tres copias y salió una. Declaraste el tamaño en el archivo y no sirvió de nada. Ninguno de los dos es un fallo: son comandos que solo existen para la impresora, y convertir no es imprimir.
La diferencia que explica todos los casos
Un archivo ZPL no describe solo el dibujo de la etiqueta. Describe también cómo debe comportarse la impresora: cuántas copias sacar, con cuánto calor quemar la cinta, a qué velocidad tirar del papel, por qué lado empezar.
Convertir es dibujar, no imprimir. No hay cinta que quemar, ni motor que acelerar, ni rollo del que tirar. Los comandos de esa segunda categoría no tienen sobre qué actuar, y la conversión pasa por encima de ellos en silencio.
No es una limitación del conversor: es lo que separa los dos trabajos. Vale la pena saber cuáles son, porque casi todos provocan la misma duda ("pero si está escrito en el archivo").
^PQ: pedir tres copias devuelve una página
^PQ es la cantidad de copias. Este archivo pide tres:
^XA
^FO50,50^A0N,30,30^FDPedido 1234^FS
^PQ3
^XZConvertido, devuelve una página. Lo medimos contra el renderizador que usa EasyZPL, y hay una prueba que lo mantiene así.
El razonamiento: ^PQ le dice a una impresora que repita la misma etiqueta, no describe tres etiquetas. El archivo tiene una etiqueta, así que el PDF tiene una página.
Si quieres tres páginas, el archivo necesita tres bloques ^XA … ^XZ, uno por etiqueta. Es más largo y es más honesto: lo que contiene el archivo pasa a ser lo que sale en el PDF.
^PW y ^LL: el tamaño lo eliges tú
^PW declara el ancho de impresión y ^LL el largo de la etiqueta, los dos en puntos. Renderizamos con y sin ellos: la salida es idéntica, byte a byte.
El tamaño de la conversión sale de los campos de ancho y alto de la pantalla, en milímetros, no de lo que declara el archivo. Es deliberado, y la razón es práctica: la mayoría de los archivos que circulan no traen ningún ^PW, porque la impresora de destino ya estaba configurada. Obedecer al archivo cuando habla y adivinar cuando calla daría dos comportamientos a la misma pantalla.
La consecuencia práctica: si la etiqueta salió cortada o con margen de sobra, el sitio donde corregirlo es la pantalla, no el archivo.
^MD, ^PR, ^PO y ^LT: ajustes de máquina
^MD ajusta la oscuridad de impresión, ^PR la velocidad, ^PO la orientación y ^LT el desplazamiento del borde superior. Probamos los cuatro, incluido ^POI, que gira la etiqueta 180 grados: la salida es idéntica byte a byte en todos los casos.
Tiene sentido cuando miras lo que controlan. La oscuridad es cuánto calor aplica el cabezal a la cinta; la velocidad es el motor; la orientación y el desplazamiento describen cómo sale la etiqueta del rollo. Nada de eso existe en un PDF.
Así que si tu etiqueta impresa sale demasiado clara, el ajuste va en la impresora, y el PDF no tiene nada que ver.
Un comando que no existe tampoco da error
Este es el caso que más sorprende: un comando mal escrito, o que sencillamente no existe, no genera ningún aviso. La etiqueta se convierte como si no estuviera.
^XA
^ZZinventado
^FO50,50^A0N,30,30^FDPedido 1234^FS
^XZEsa etiqueta sale idéntica a la misma sin la línea del medio.
No es un descuido: es como se diseñó ZPL. Modelos distintos de impresora entienden conjuntos distintos de comandos, y un archivo escrito para un modelo nuevo tiene que seguir imprimiendo en uno viejo, ignorando lo que no reconoce. Esa tolerancia es lo que permite que un mismo archivo recorra un parque de máquinas de diez años.
Lo pagas tú, y el error de escritura más común lo demuestra: escribir ^F0 con el número cero en lugar de ^FO con la letra O. El comando deja de existir, así que se va con él la posición que llevaba, y el campo se dibuja en la esquina superior izquierda, encima de lo que ya hubiera ahí.
Reconocer ese fallo ahorra tiempo: cuando un elemento aparece amontonado en la esquina en lugar de en su sitio, busca un cero donde debería haber una O antes de buscar cualquier otra causa.
En resumen
Si está en el archivo y no salió como esperabas, casi siempre es uno de estos tres casos: un comando de máquina, ignorado a propósito; un comando mal escrito, que no avisa y además se lleva por delante lo que configuraba; o contenido colocado fuera del área de la etiqueta. Los dos primeros están aquí, el tercero está en la guía sobre por qué una etiqueta no llega al PDF.