zplCloud Blog

Stampare ZPL su qualsiasi stampante di etichette: TSC, Honeywell, SATO, Brother, Toshiba e altre

Le tue etichette sono in ZPL, ma non tutte le stampanti sono Zebra. Come stampare esattamente la stessa etichetta su stampanti che parlano TSPL, DPL, SBPL, EPL2, CPCL, ESC/POS, Brother Raster, PCL, Easy Plug, TPCL o JScript - come PNG, PDF o lavoro grezzo per la porta 9100.

12 min di lettura zplCloud Team

Un'etichetta, undici linguaggi di stampa

Un'etichetta di spedizione ZPL viene renderizzata una sola volta come bitmap e inviata a stampanti TSC, Honeywell, SATO, Brother, Toshiba Tec, cab e Avery Dennison, ciascuna nel proprio linguaggio di stampa

ZPL è il linguaggio per etichette più diffuso in assoluto, ed è stato scritto per le stampanti Zebra. Va benissimo finché in magazzino ci sono solo Zebra. Poi una stampante TSC arriva con un'offerta più conveniente, lo stabilimento nel paese vicino usa SATO, all'imballaggio c'è una Brother QL su ogni banco, la linea di stampa e applicazione monta teste Avery Dennison o Novexx e i resi escono dalla laser dell'ufficio. Le etichette, però, esistono una sola volta: in ZPL, generate dall'ERP, dallo shop o dal designer di zplCloud.

Questa guida mostra come portare quell'unica etichetta ZPL su tutte queste stampanti - identica, punto per punto - e a cosa fare attenzione.


Tre modi per stampare ZPL su una stampante che non parla ZPL

1. Emulazione. Molti produttori forniscono un'emulazione ZPL: Honeywell ZSim, SATO SZPL, Godex GZPL, Citizen Cross-Emulation, le modalità ZPL di TSC e cab. Per etichette semplici funziona. Per tutto il resto, un'emulazione è una reimplementazione di ZPL fatta da qualcun altro: metriche dei font, larghezze dei codici a barre, a capo del testo nei campi ^FB, grafica ^GFA e font memorizzati si comportano in modo leggermente diverso, e finisci per testare ogni modello di etichetta su ogni modello di stampante.

2. Tradurre i comandi. Un convertitore riscrive ^FO…^A0…^FD nei comandi di testo e di codice a barre dell'altro linguaggio. Funziona solo per i comandi che hanno un equivalente, e la stampante usa poi i suoi font e il suo generatore di codici a barre. Il risultato è simile, non identico.

3. Inviare un'immagine. L'etichetta viene renderizzata una sola volta, alla risoluzione della stampante di destinazione, e inviata come bitmap monocromatica nel comando grafico del linguaggio di quella stampante. Ogni linguaggio di stampa ne ha uno. La stampante non interpreta più nulla - stampa soltanto punti. Font, Unicode, loghi e codici a barre appaiono esattamente come nell'anteprima.

zplCloud segue la terza strada, in due varianti: come file immagine per tutto ciò che ha un driver e come lavoro grezzo nel linguaggio della stampante per tutto ciò che è in rete.


Variante 1: PNG, JPG o PDF

Per stampanti da ufficio, allegati e-mail e archivi, l'etichetta diventa semplicemente un file:

  • Da ZPL a PDF renderizza una pagina per etichetta, oppure dispone le etichette nelle dimensioni originali su fogli A4 o Letter con linee di taglio - il modo più rapido per stampare un'etichetta di reso sulla laser dell'ufficio.
  • Da ZPL a PNG e Da ZPL a JPG renderizzano singole etichette a 203, 300 o 600 dpi, per esempio per un sistema e-commerce che stampa tramite driver.

Qualunque cosa stampi il file, stampa la stessa immagine. Il limite di questa variante è il driver nel mezzo: ridimensiona, aggiunge margini e richiede un computer.


Variante 2: il linguaggio della stampante, come bitmap

Per le stampanti di etichette in rete non serve un driver. Gli strumenti per stampanti e i relativi endpoint API costruiscono un lavoro finito che va direttamente alla porta TCP 9100:

1. Renderizzare. Il motore di zplCloud disegna ogni etichetta ^XA…^XZ alla risoluzione della testina di destinazione - senza anti-aliasing, come stampa una testina termica. Una linea da un punto resta larga esattamente un punto.

2. Ridurre a 1 bit. Ogni punto è nero o bianco.

3. Impacchettare. La bitmap entra nel comando grafico del linguaggio di destinazione, insieme ai pochi comandi di cui il lavoro ha bisogno per stampare.

4. Inviare. Il file viene inviato senza modifiche alla porta 9100 della stampante.

StampantiLinguaggioStrumentoComando immagineCompressione
TSC, Printronix serie TTSPLDa ZPL a TSPLBITMAPPCX (DOWNLOAD + PUTPCX)
Honeywell, Datamax-O'NeilDPLDa ZPL a DPL<STX>I + campo immaginesempre PCX
SATOSBPLDa ZPL a SBPLESC GB / ESC GHPCX (ESC GP)
Stampanti Zebra EPLEPL2Da ZPL a EPL2GW-
Portatili Zebra e HoneywellCPCLDa ZPL a CPCLbande CG / EGPCX (PCX)
Epson TM, Star, BixolonESC/POSDa ZPL a ESC/POSGS v 0-
Brother QL, TD-4, P-touchBrother RasterDa ZPL a Brother Rasterrighe rasterTIFF PackBits
HP LaserJet e laser PCLPCL 5Da ZPL a PCLESC*b#WTIFF PackBits
Avery Dennison, NovexxEasy PlugDa ZPL a Easy Plug#YIBRLE (#YIR)
Toshiba TecTPCLDa ZPL a TPCL{SG;…}TOPIX
cabJScriptDa ZPL a JScriptupload immagine + campo IPCX

Ogni lavoro segue il manuale di programmazione del produttore, e ogni linguaggio viene testato decodificando il lavoro finito di nuovo in una bitmap che deve coincidere punto per punto con l'etichetta renderizzata - compresi gli esempi svolti della documentazione TOPIX di Toshiba e RLE di Novexx.


Quanti dati servono per un'immagine?

Un'immagine è più grande di ZPL. I numeri onesti, per una tipica etichetta di spedizione da 100 × 150 mm a 203 dpi (812 × 1.218 punti) con testo, un DataMatrix, un QR code, un codice a barre GS1-128 e una riga di testo in giapponese, russo e arabo:

LavoroNon compressoCompresso
Sorgente ZPL (per confronto)859 byte-
TSPL121 KB52 KB (PCX)
EPL2121 KB-
SBPL122 KB52 KB (PCX)
DPL-52 KB (PCX)
CPCL81 KB (righe vuote saltate)52 KB (PCX)
JScript124 KB (BMP)52 KB (PCX)
Brother Raster, TD-4420DN128 KB45 KB (TIFF)
PCL a 300 dpi64 KB (righe vuote saltate)44 KB (TIFF)
Easy Plug121 KB16 KB (RLE)
TPCL121 KB9,5 KB (TOPIX)

Saltano all'occhio tre cose:

  • Senza compressione si parla di circa 1 bit per punto. 812 × 1.218 punti fanno 121 KB, qualunque sia il linguaggio.
  • Vince la compressione che guarda le righe vicine. PCX e PackBits comprimono solo all'interno di una riga. Il TOPIX di Toshiba invia solo i byte cambiati rispetto alla riga precedente, e l'RLE di Easy Plug ripete le righe identiche - e nelle etichette abbondano entrambi i casi.
  • In rete conta poco. 121 KB impiegano circa 10 ms su Ethernet a 100 Mbit. La compressione ripaga su Wi-Fi e Bluetooth, per lotti di migliaia di etichette e per stampanti con un buffer di ricezione piccolo.

Gli strumenti sul sito mostrano la dimensione di ogni lavoro e, con la compressione attiva, quanto ha fatto risparmiare.


Passo dopo passo

Sul sito, senza bisogno di un account:

1. Apri lo strumento per la tua stampante, per esempio Da ZPL a TSPL.

2. Incolla il codice ZPL oppure apri il file .zpl.

3. Scegli la risoluzione della stampante (203, 300 o 600 dpi; per Brother, il modello).

4. Se vuoi, attiva la compressione, poi converti.

5. Controlla l'anteprima - mostra esattamente i punti che verranno inviati - e scarica il lavoro.

6. Invialo alla stampante:

# Linux / macOS
nc -q 1 192.168.1.50 9100 < label.tspl
# Windows PowerShell
$c = [Net.Sockets.TcpClient]::new('192.168.1.50', 9100)
$b = [IO.File]::ReadAllBytes("$PWD\label.tspl")
$c.GetStream().Write($b, 0, $b.Length); $c.Close()

Tramite l'API, per il tuo software: ogni strumento è un endpoint POST /v1/tools/zpl-to-<language> su api.zplcloud.com. La risposta è il lavoro grezzo:

jq -Rs '{zpl: ., dpi: 203, compress: true}' label.zpl \
  | curl -X POST https://api.zplcloud.com/v1/tools/zpl-to-tpcl \
      -H "X-API-Key: $ZPLCLOUD_API_KEY" -H "Content-Type: application/json" \
      --data-binary @- -o label.tpcl

nc -q 1 192.168.1.60 9100 < label.tpcl

I file con più etichette diventano un unico lavoro con più etichette; l'header X-ZplCloud-Label-Count indica quante sono. Tutti i campi e i comandi esatti per ogni linguaggio sono nel riferimento API.


Stampare ogni giorno: zplCloud CLI, cartelle monitorate e stampanti remote

nc va bene per una prova. Per la stampa quotidiana, la zplCloud CLI gratuita si occupa dell'unica cosa che conta con questi lavori: contengono dati immagine binari e devono arrivare alla stampante byte per byte - senza codifica del testo, senza un a capo aggiunto alla fine. La CLI lo fa in rete, via USB, da una cartella monitorata e, tramite il suo agente, verso stampanti in altre reti.

Inviare un lavoro finito - senza bisogno di un account:

zplcloud send --target 192.168.1.50 --file label.tspl
zplcloud send --usb --file label.bin      # Brother QL su USB

La CLI riconosce i nomi di file usati dagli strumenti (.tspl, .epl, .dpl, .sbpl, .cpcl, .escpos, .bin, .pcl, .ezp, .tpcl, .jscript) e li invia senza modifiche; --raw fa lo stesso per qualsiasi altro file.

Convertire e inviare in un solo passaggio - la CLI chiama l'API per te:

zplcloud send --target 192.168.1.50 --file label.zpl --language tspl --dpi 300 --compress

Cartella monitorata: l'ERP continua a scrivere ZPL. L'agente (zplcloud proxy) monitora una cartella e trasforma ogni file ZPL nel linguaggio della stampante prima di stamparlo. Il software che produce le etichette non cambia affatto - continua a scrivere file ZPL, e la stampante TSC riceve TSPL:

{
  "name": "tsc-shipping",
  "enabled": true,
  "folder": "/labels/tsc",
  "pattern": "*.zpl",
  "targetHost": "192.168.1.50",
  "convert": { "language": "tspl", "dpi": 300, "compress": true }
}

Stampanti remote: dal cloud a una stampante in un'altra rete. L'agente mantiene una sola connessione in uscita verso zplCloud, così una stampante in un altro magazzino, in un negozio o presso un cliente è raggiungibile senza aprire una porta. Il tuo software chiama un solo endpoint - con un lavoro finito, oppure con il codice ZPL e il linguaggio:

curl -X POST https://api.zplcloud.com/v1/remote-printers/4/raw \
  -H "X-API-Key: $ZPLCLOUD_API_KEY" -H "Content-Type: application/json" \
  -d '{"zpl": "^XA^FO50,50^A0N,40,40^FDHello TSC^FS^XZ", "language": "tspl", "dpi": 203}'

L'agente inoltra il lavoro tramite TCP 9100 o USB e riferisce se è arrivato.

Dove va il lavoroComando o endpoint
Stampante nella rete localezplcloud send --target <ip> --file label.tspl
Stampante USBzplcloud send --usb --file label.bin
File ZPL da ERP, shop o software dei corriericartella monitorata con "convert": { "language": "tspl" }
Stampante in un'altra retePOST /v1/remote-printers/{id}/raw oppure zplcloud send --remote-printer <id>
Cartella monitorata tramite l'APIPOST /v1/print/folder con language o base64

Servono CLI e agente versione 1.2.26 o successiva; le versioni precedenti leggono ogni file come testo e danneggerebbero i dati immagine. Le stampanti su TCP funzionano già tramite gli agenti a partire dalla 1.2.22.


A cosa fare attenzione

  • La risoluzione deve corrispondere. Un'etichetta renderizzata per 203 dpi esce circa un terzo più piccola su una stampante da 300 dpi. Gli strumenti offrono solo le risoluzioni delle testine reali, così la dimensione resta 1:1 - scegli quella della tua stampante.
  • Le impostazioni del supporto restano nella stampante. I lavori, di proposito, non sovrascrivono le impostazioni memorizzate di gap, sensore o marca nera. Imposta la stampante sulla dimensione dell'etichetta una volta, come faresti per qualsiasi altro lavoro.
  • I codici a barre si leggono come l'originale. Un codice a barre in bitmap è largo esattamente quanto l'ha generato ZPL, perché le barre erano già punti interi. Vale solo alla risoluzione giusta - un motivo in più per scegliere i dpi della stampante.
  • Stampa un'etichetta di prova per modello. Le versioni del firmware differiscono nei dettagli: come leggono le immagini PCX, l'origine dell'immagine sulle stampanti Easy Plug, l'impostazione del ribbon sulle Toshiba. Gli strumenti mostrano queste note accanto a ogni lavoro.
  • Brother ha bisogno del modello. Larghezza della testina, margini e supporti vengono dalla command reference di Brother; l'etichetta viene centrata sul supporto più stretto in cui entra. Le etichettatrici a nastro P-touch stampano trasversalmente al nastro.
  • Se una stampante parla ZPL nativamente, invia ZPL. È più compatto e la stampante può usare i propri font. La via della bitmap è per le stampanti che non possono farlo - o per le etichette in cui "quasi identico" non basta.

Quando basta un'emulazione?

Se l'etichetta è fatta di poche righe di testo latino e un Code 128, e la stampante ha un'emulazione ZPL, provala prima. Appena entrano in gioco testo Unicode, font TrueType, loghi, blocchi di testo ^FB o una flotta mista, la bitmap è la scelta più sicura: un rendering, un risultato, su ogni stampante.


FAQ

La stampante ha bisogno di un firmware speciale?

No. I lavori usano solo i comandi grafici standard di ciascun linguaggio, che ogni stampante di quella famiglia capisce.

I codici a barre si possono ancora scansionare?

Sì. I codici a barre vengono disegnati dal motore di zplCloud con larghezze esatte in punti e stampati punto per punto. Se vuoi esserne sicuro, controllali con Verifica codice a barre.

Il testo resta testo sulla stampante?

No. La stampante riceve un'immagine. È proprio questo il punto - nessun font sulla stampante può cambiare il layout - ma significa anche che la stampante non può compilare da sola contatori o campi. Renderizza invece un'etichetta per ogni record di dati: l'API lo fa in una sola chiamata per i file con molte etichette.

Il nostro software sa scrivere solo file ZPL. Può comunque stampare su una stampante TSC o Brother?

Sì. Indirizzalo verso una cartella monitorata dell'agente zplCloud con "convert": { "language": "tspl" } (oppure brother, dpl …). L'agente converte ogni file prima di stamparlo, e il software non si accorge mai che la stampante non è una Zebra.

E le stampanti da 180 dpi?

Sono supportate dove esistono: ESC/POS a 180 dpi per la serie Epson TM-T88, e i modelli Brother P-touch a 180 e 360 dpi.

È gratuito?

Gli strumenti sul sito sono gratuiti e non richiedono un account, con limiti di fair use per l'uso anonimo. Tramite l'API ogni etichetta conta come un rendering; vedi i prezzi.


Provalo con la tua etichetta: scegli la tua stampante negli strumenti, incolla il codice ZPL e invia il risultato alla porta 9100. Se gestisci una flotta mista, la piattaforma zplCloud tiene i design in un unico posto - e gli strumenti per stampanti fanno sì che ogni stampante riceva la stessa etichetta.

Altri articoli