Neither ^PW nor ^LL is set. Both fall back to a value stored in the individual printer, not to a value in the spec — so the same ZPL prints differently on two printers of the same model.
Set ^PW and ^LL explicitly in every format.
No barcode height set. This prints 10 dots tall — about 1.2 mm at 203 dpi — and will not scan.
Set the height in the symbology's h parameter, e.g. ^BCN,254,…, or set ^BY before the field.
^XA^FO50,50^BCN^FD012345678905^FS^XZ
A ^BC / ^B3 / ^BE field with no height in the symbology's own h parameter AND no ^BY setting a height in this ^XA block.
Neither ^PW nor ^LL is set. Both fall back to a value stored in the individual printer, not to a value in the spec — so the same ZPL prints differently on two printers of the same model.
Set ^PW and ^LL explicitly in every format.
No barcode height set. This prints 10 dots tall — about 1.2 mm at 203 dpi — and will not scan.
Set the height in the symbology's h parameter, e.g. ^BCN,254,…, or set ^BY before the field.
ZPL falls back to the power-up ^BY height default of 10 dots. It renders, it looks like a thin black line, and no scanner reads it.
The bar width is outside the GS1-128 range (0.495 mm to 0.940 mm, 0.495 mm target). At 203 dpi that means ^BY 4 or greater.
Raise ^BY to at least 4 at 203 dpi, or 6 at 300 dpi.
At 203 dpi ^BY2 — the power-up default — and ^BY3 both fail GS1.
This GS1-128 is shorter than the 31.75 mm GS1 requires. It may scan on a handheld and fail at a fixed scanner.
Set the height to at least 254 dots at 203 dpi, or 375 at 300 dpi.
This GS1-128 is missing the leading FNC1. Without it the symbol is a plain Code 128 and the scanner will not read the AIs.
Add FNC1 (>8) immediately after the subset start code, or use ^BC mode D.
ZPL falls back to the power-up ^BY height default of 10 dots. It renders, it looks like a thin black line, and no scanner reads it.