zplCloud Blog

Imprima ZPL em qualquer impressora de etiquetas: TSC, Honeywell, SATO, Brother, Toshiba e mais

Suas etiquetas são ZPL, mas nem toda impressora é uma Zebra. Veja como imprimir exatamente a mesma etiqueta em impressoras que falam TSPL, DPL, SBPL, EPL2, CPCL, ESC/POS, Brother Raster, PCL, Easy Plug, TPCL ou JScript - como PNG, PDF ou trabalho bruto para a porta 9100.

12 min de leitura zplCloud Team

Uma etiqueta, onze linguagens de impressora

Uma etiqueta de envio ZPL é renderizada uma única vez como bitmap e enviada a impressoras TSC, Honeywell, SATO, Brother, Toshiba Tec, cab e Avery Dennison, cada uma na sua própria linguagem de impressora

ZPL é a linguagem de etiquetas mais difundida que existe, e foi escrita para impressoras Zebra. Isso funciona bem até o armazém deixar de ser só Zebra. Uma impressora TSC veio com uma oferta mais barata, a fábrica no país vizinho usa SATO, a expedição tem uma Brother QL em cada mesa, a linha de impressão e aplicação tem cabeças Avery Dennison ou Novexx, e as devoluções saem da laser do escritório. As etiquetas, porém, existem uma única vez: como ZPL, gerado pelo ERP, pela loja virtual ou pelo designer do zplCloud.

Este guia mostra como levar essa única etiqueta ZPL a todas essas impressoras - idêntica, ponto por ponto - e no que prestar atenção.


Três formas de imprimir ZPL em uma impressora que não fala ZPL

1. Emulação. Muitos fabricantes oferecem uma emulação ZPL: Honeywell ZSim, SATO SZPL, Godex GZPL, Citizen Cross-Emulation, modos ZPL da TSC e da cab. Para etiquetas simples, funciona. Para todo o resto, uma emulação é uma reimplementação do ZPL feita por outra pessoa: métricas de fonte, larguras de código de barras, quebra de texto em campos ^FB, gráficos ^GFA e fontes armazenadas se comportam de forma ligeiramente diferente, e você acaba testando cada modelo de etiqueta em cada modelo de impressora.

2. Tradução de comandos. Um conversor reescreve ^FO…^A0…^FD nos comandos de texto e de código de barras da outra linguagem. Isso só funciona para comandos que têm um equivalente, e a impressora passa a usar suas fontes e seu gerador de códigos de barras. O resultado é parecido, não idêntico.

3. Envio de uma imagem. A etiqueta é renderizada uma única vez, na resolução da impressora de destino, e enviada como bitmap monocromático no comando gráfico da própria linguagem dessa impressora. Toda linguagem de impressora tem um. A impressora não interpreta mais nada - apenas imprime pontos. Fontes, Unicode, logotipos e códigos de barras ficam exatamente como na visualização.

O zplCloud usa a terceira forma, em duas variantes: como arquivo de imagem para tudo que tem driver, e como trabalho bruto na linguagem da impressora para tudo que está na rede.


Variante 1: PNG, JPG ou PDF

Para impressoras de escritório, anexos de e-mail e arquivamento, a etiqueta simplesmente vira um arquivo:

  • ZPL para PDF renderiza uma página por etiqueta, ou posiciona as etiquetas no tamanho original em folhas A4 ou Letter com linhas de corte - a maneira mais rápida de imprimir uma etiqueta de devolução na laser do escritório.
  • ZPL para PNG e ZPL para JPG renderizam etiquetas individuais em 203, 300 ou 600 dpi, por exemplo para um sistema de loja virtual que imprime por meio de um driver.

Qualquer coisa que imprima o arquivo imprime a mesma imagem. O limite desta variante é o driver no meio do caminho: ele redimensiona, adiciona margens e precisa de um computador.


Variante 2: a própria linguagem da impressora, como bitmap

Para impressoras de etiquetas na rede, não é preciso driver. As ferramentas de impressora e os endpoints de API correspondentes montam um trabalho pronto que vai direto para a porta TCP 9100:

1. Renderizar. O motor do zplCloud desenha cada etiqueta ^XA…^XZ na resolução da cabeça de impressão de destino - sem anti-aliasing, do jeito que uma cabeça térmica imprime. Uma linha de um ponto continua com exatamente um ponto de largura.

2. Reduzir a 1 bit. Cada ponto é preto ou branco.

3. Empacotar. O bitmap entra no comando gráfico da linguagem de destino, junto com os poucos comandos de que o trabalho precisa para imprimir.

4. Enviar. O arquivo é enviado sem alterações para a porta 9100 da impressora.

ImpressorasLinguagemFerramentaComando de imagemCompressão
TSC, Printronix série TTSPLZPL para TSPLBITMAPPCX (DOWNLOAD + PUTPCX)
Honeywell, Datamax-O'NeilDPLZPL para DPL<STX>I + campo de imagemsempre PCX
SATOSBPLZPL para SBPLESC GB / ESC GHPCX (ESC GP)
Impressoras Zebra EPLEPL2ZPL para EPL2GW-
Móveis Zebra e HoneywellCPCLZPL para CPCLfaixas CG / EGPCX (PCX)
Epson TM, Star, BixolonESC/POSZPL para ESC/POSGS v 0-
Brother QL, TD-4, P-touchBrother RasterZPL para Brother Rasterlinhas rasterTIFF PackBits
HP LaserJet e lasers PCLPCL 5ZPL para PCLESC*b#WTIFF PackBits
Avery Dennison, NovexxEasy PlugZPL para Easy Plug#YIBRLE (#YIR)
Toshiba TecTPCLZPL para TPCL{SG;…}TOPIX
cabJScriptZPL para JScriptupload de imagem + campo IPCX

Cada trabalho segue o manual de programação do fabricante, e cada linguagem é testada decodificando o trabalho pronto de volta em um bitmap que precisa coincidir ponto por ponto com a etiqueta renderizada - incluindo os exemplos resolvidos das documentações do TOPIX da Toshiba e do RLE da Novexx.


Quantos dados uma imagem precisa?

Uma imagem é maior que ZPL. Os números honestos, para uma etiqueta de envio típica de 100 × 150 mm a 203 dpi (812 × 1.218 pontos) com texto, um DataMatrix, um QR code, um código de barras GS1-128 e uma linha de texto em japonês, russo e árabe:

TrabalhoSem compressãoCom compressão
Código-fonte ZPL (para comparação)859 bytes-
TSPL121 KB52 KB (PCX)
EPL2121 KB-
SBPL122 KB52 KB (PCX)
DPL-52 KB (PCX)
CPCL81 KB (linhas em branco puladas)52 KB (PCX)
JScript124 KB (BMP)52 KB (PCX)
Brother Raster, TD-4420DN128 KB45 KB (TIFF)
PCL a 300 dpi64 KB (linhas em branco puladas)44 KB (TIFF)
Easy Plug121 KB16 KB (RLE)
TPCL121 KB9,5 KB (TOPIX)

Três coisas chamam a atenção:

  • Sem compressão, é cerca de 1 bit por ponto. 812 × 1.218 pontos dão 121 KB, seja qual for a linguagem.
  • Vence a compressão que olha para as linhas vizinhas. PCX e PackBits só comprimem dentro de uma linha. O TOPIX da Toshiba envia apenas os bytes que mudaram em relação à linha anterior, e o RLE do Easy Plug repete linhas idênticas - e etiquetas têm muito de ambos.
  • Em rede, quase não faz diferença. 121 KB levam cerca de 10 ms em Ethernet de 100 Mbit. A compressão compensa em Wi-Fi e Bluetooth, em lotes de milhares de etiquetas e em impressoras com buffer de recepção pequeno.

As ferramentas do site mostram o tamanho de cada trabalho e, com a compressão ativada, quanto ela economizou.


Passo a passo

No site, sem precisar de conta:

1. Abra a ferramenta da sua impressora, por exemplo ZPL para TSPL.

2. Cole o ZPL ou abra o arquivo .zpl.

3. Escolha a resolução da impressora (203, 300 ou 600 dpi; na Brother, o modelo).

4. Se quiser, ative a compressão e depois converta.

5. Confira a visualização - ela mostra exatamente os pontos que serão enviados - e baixe o trabalho.

6. Envie-o para a impressora:

# 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()

Pela API, para o seu próprio software: cada ferramenta é um endpoint POST /v1/tools/zpl-to-<language> em api.zplcloud.com. A resposta é o trabalho bruto:

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

Arquivos com várias etiquetas viram um único trabalho com várias etiquetas; o header X-ZplCloud-Label-Count informa quantas são. Todos os campos e os comandos exatos de cada linguagem estão na referência da API.


Impressão no dia a dia: zplCloud CLI, pastas monitoradas e impressoras remotas

nc serve para um teste. Para imprimir no dia a dia, o zplCloud CLI gratuito cuida da única coisa que importa nesses trabalhos: eles contêm dados de imagem binários e precisam chegar à impressora byte por byte - sem codificação de texto, sem quebra de linha adicionada no final. O CLI faz isso pela rede, via USB, a partir de uma pasta monitorada e, por meio do seu agente, até impressoras em outras redes.

Enviar um trabalho pronto - sem precisar de conta:

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

O CLI reconhece os nomes de arquivo que as ferramentas usam (.tspl, .epl, .dpl, .sbpl, .cpcl, .escpos, .bin, .pcl, .ezp, .tpcl, .jscript) e os envia sem alterações; --raw faz o mesmo com qualquer outro arquivo.

Converter e enviar em um só passo - o CLI chama a API por você:

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

Pasta monitorada: o ERP continua gerando ZPL. O agente (zplcloud proxy) monitora uma pasta e converte cada arquivo ZPL para a linguagem da impressora antes de imprimir. O software que gera as etiquetas não muda em nada - ele continua gravando arquivos ZPL, e a impressora TSC recebe TSPL:

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

Impressoras remotas: da nuvem para uma impressora em outra rede. O agente mantém uma única conexão de saída com o zplCloud, então uma impressora em outro armazém, em uma loja ou em um cliente pode ser acessada sem abrir nenhuma porta. Seu software chama um único endpoint - com um trabalho pronto, ou com o ZPL e a linguagem:

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}'

O agente repassa o trabalho via TCP 9100 ou USB e informa se ele chegou.

Para onde vai o trabalhoComando ou endpoint
Impressora na rede localzplcloud send --target <ip> --file label.tspl
Impressora USBzplcloud send --usb --file label.bin
Arquivos ZPL de ERP, loja virtual ou software de transportadorapasta monitorada com "convert": { "language": "tspl" }
Impressora em outra redePOST /v1/remote-printers/{id}/raw ou zplcloud send --remote-printer <id>
Pasta monitorada pela APIPOST /v1/print/folder com language ou base64

Você precisa do CLI e do agente na versão 1.2.26 ou posterior; versões anteriores leem todos os arquivos como texto e danificariam os dados de imagem. Impressoras via TCP já funcionam com agentes a partir da versão 1.2.22.


No que prestar atenção

  • A resolução precisa bater. Uma etiqueta renderizada para 203 dpi sai cerca de um terço menor em uma impressora de 300 dpi. As ferramentas só oferecem resoluções que cabeças de impressão reais têm, para que o tamanho continue 1:1 - escolha a da sua impressora.
  • As configurações de mídia ficam na impressora. Os trabalhos, de propósito, não sobrescrevem as configurações armazenadas de gap, sensor ou marca preta. Ajuste a impressora ao tamanho da etiqueta uma vez, como faria para qualquer outro trabalho.
  • Os códigos de barras são lidos como os originais. Um código de barras em bitmap tem exatamente a largura que o ZPL lhe deu, porque as barras já eram pontos inteiros. Isso só vale na resolução certa - mais um motivo para escolher o dpi da impressora.
  • Imprima uma etiqueta de teste por modelo. Versões de firmware diferem em detalhes: como leem imagens PCX, a origem da imagem nas impressoras Easy Plug, a configuração do ribbon na Toshiba. As ferramentas mostram essas observações ao lado de cada trabalho.
  • A Brother precisa do modelo. Largura da cabeça, margens e mídia vêm da referência de comandos da Brother; a etiqueta é centralizada na mídia mais estreita em que cabe. As rotuladoras de fita P-touch imprimem transversalmente à fita.
  • Se a impressora fala ZPL nativamente, envie ZPL. É menor, e a impressora pode usar as próprias fontes. O caminho do bitmap é para as impressoras que não falam - ou para as etiquetas em que "quase idêntico" não é suficiente.

Quando uma emulação é suficiente?

Se a etiqueta tem poucas linhas de texto latino e um Code 128, e a impressora tem emulação ZPL, experimente-a primeiro. Assim que entram texto Unicode, fontes TrueType, logotipos, blocos de texto ^FB ou uma frota mista, o bitmap é a escolha mais segura: uma renderização, um resultado, em todas as impressoras.


FAQ

A impressora precisa de um firmware especial?

Não. Os trabalhos usam apenas os comandos gráficos padrão de cada linguagem, que toda impressora dessa família entende.

Os códigos de barras continuam legíveis?

Sim. Os códigos de barras são desenhados pelo motor do zplCloud com larguras de ponto exatas e impressos ponto por ponto. Se quiser ter certeza, confira com Verificar código de barras.

O texto continua sendo texto na impressora?

Não. A impressora recebe uma imagem. Essa é justamente a ideia - nenhuma fonte na impressora pode alterar o layout -, mas isso também significa que a impressora não consegue preencher contadores ou campos por conta própria. Em vez disso, renderize uma etiqueta por registro de dados, algo que a API faz em uma única chamada para arquivos com muitas etiquetas.

Nosso software só consegue gravar arquivos ZPL. Mesmo assim ele pode imprimir em uma impressora TSC ou Brother?

Sim. Configure-o para gravar em uma pasta monitorada do agente do zplCloud com "convert": { "language": "tspl" } (ou brother, dpl …). O agente converte cada arquivo antes de imprimir, e o software nem percebe que a impressora não é uma Zebra.

E as impressoras de 180 dpi?

São suportadas onde existem: ESC/POS a 180 dpi para a série Epson TM-T88, e os modelos Brother P-touch a 180 e 360 dpi.

É gratuito?

As ferramentas do site são gratuitas e não exigem conta, com limites de uso justo para uso anônimo. Pela API, cada etiqueta conta como uma renderização; veja os preços.


Experimente com a sua própria etiqueta: escolha sua impressora nas ferramentas, cole o ZPL e envie o resultado para a porta 9100. Se você gerencia uma frota mista, a plataforma zplCloud mantém os designs em um só lugar - e as ferramentas de impressora garantem que toda impressora receba a mesma etiqueta.

Mais artigos