Impressão de Etiquetas com PHP

Escrito por Diogo Bemfica

Introdução

Hoje quero compartilhar com vocês uma lib open source que eu mesmo desenvolvi, essa lib foi feita para facilitar na tarefa de impressão de etiquetas. Usando a lib do mPDF para fazer a impressao em PDF e usamos PHPPimaco para abstrair a formatação das etiquetas, fazendo que você só se preocupe com o conteúdo e deixa a lib com o formato e dimensões das etiquetas.

Como as etiquetas existem diversas medidas e formatos a lib é especializada nas etiquetas na marca Pimaco e mesma marca das famosas canetas BIC. Na lib existe uma quantidade de formatos padronizados pela Pimaco já configurados. Provavelmente o código da etiqueta que você precise já está na lib.

Vamos por a mão no código.

PHP Pimaco

Para fazer a instalação vamos precisar do composer

composer require proner/phppimaco

ou adicione isso ao require do seu composer.json

"require":{
    "proner/phppimaco": "dev-master"
}

Para fazer a nossa primeira impressão vamos usar o exemplo a baixo

<?php

require_once __DIR__ . "/vendor/autoload.php";

use Proner\PhpPimaco\Pimaco;
use Proner\PhpPimaco\Tag;

$pimaco = new Pimaco('6182');

$tag = new Tag();
$tag->p("Etiqueta 1");
$tag->setBorder(0.1);
$pimaco->addTag($tag);

$tag = new Tag();
$tag->p("Etiqueta 2");
$tag->setBorder(0.1);
$pimaco->addTag($tag);

$pimaco->output();

A primeira coisa que precisamos e instanciar é a classe Pimaco passando o código presente na sua embalagem de etiquetas da Pimaco exemplo 6182. A classe Tag é para cada etiqueta que nós precisarmos.

Com esse exemplo temos o seguinte retorno

Exemplo 1

Obs: Por padrão a maioria das etiquetas não possui bordas. Mas foi usado o método setBorder da classe Tag para melhorar a visualização do exemplo.

Viu como foi fácil, com poucos códigos criamos duas etiquetas e só foi preciso nos preocupar com o conteúdo delas. Todo o layout do documento e da etiqueta está por responsabilidade da classe PHPPimaco.

Agora vamos para uma exemplo mais complexo.

<?php

require_once __DIR__ . "/vendor/autoload.php";

use Proner\PhpPimaco\Pimaco;
use Proner\PhpPimaco\Tag;

$pimaco = new Pimaco('6182');

$tag = new Tag();
$tag->setPadding(3);
$tag->img("https://diogobemfica.com.br/wp-content/uploads/2018/10/logo.png")->setHeight(20)->setAlign('right');
$tag->setBorder(0.1);
$tag->barcode('0001', 'TYPE_CODE_128')->setWidth(2.2)->setMargin(array(0,2,1,0))->br();
$tag->p('0001 - Produto de Teste 1')->setSize(3)->br();
$tag->p('R$: 9,90')->b()->setSize(5);
$pimaco->addTag($tag);

$tag = new Tag();
$tag->setPadding(3);
$tag->img("https://diogobemfica.com.br/wp-content/uploads/2018/10/logo.png")->setHeight(20)->setAlign('right');
$tag->setBorder(0.1);
$tag->barcode('0002', 'TYPE_CODE_128')->setWidth(2.2)->setMargin(array(0,2,1,0))->br();
$tag->p('0002 - Produto de Teste 2')->setSize(3)->br();
$tag->p('R$: 29,90')->b()->setSize(5);
$pimaco->addTag($tag);

$pimaco->output();

Agora temos etiquetas mais complexas. Exemplo 1

Obs: Agora imprimimos etiquetas com imagem do logo da empresa mais um código de barras do código do produto.

Conclusão

Espero que tenha gostado desta dica rápida. E que essa lib possa ajudar vocês na impressão das suas etiquetas.

Comentários


  • Bom dia, Pode me confirmar uma coisa? Se estes templates são compatíveis com impressoras de rolo? exemplo: http://www.pimaco.com.br/produto/301/impressora-termica-smart-label-printer Como o .pdf mostra me uma página A4 não percebo se está a funcionar como pretendo e não tenho a impressora para testar.

  • Boa noite Fred Desculpe demorar para responder ao seu comentario. Mas não posso te dar certeza de que vai funcionar, mas como os templates possui as dimensões do papel acredito que se tiver o template que você precisa não tem o porque não funcionar. Se você tiver como testar posso tentar fazer um template para você, só me passar o modelo da impressora. E se tudo der certo adicionamos este template ao pacote.

  • Boa noite ... passando para parabenizar pelo código, implementei no meu projeto deu certo....

  • Obrigado Farley

  • Diego, vamos ver se pode me ajudar, estou tentando implementar um forech para que gera as etiquetas de forma dinâmica com dados a partir do DB... mas não está dando certo... aki no caso essa variavel $impressao está buscando os valores do DB $impressao = $this->core_model->get_all('produtos'); foreach ($impressao as $gerar){ $pimaco = new Pimaco('6187'); $tag = new Tag(); $tag->setPadding(2); //$tag->img('public/img/logotipo.png')->setHeight(20)->setAlign('right'); $tag->setBorder(0.1); $tag->barcode('0001', 'TYPE_CODE_128')->setWidth(2.2)->setMargin([0, 2, 1, 0])->br(); $tag->p(''.$gerar->produto_descricao.'')->setSize(3)->br(); $tag->p('R$ '.$gerar->produto_preco_venda.'')->b()->setSize(5); $pimaco->addTag($tag); } $pimaco->output(); Desde já agradeço.... Obrigado

  • Bom dia Farley acredito que é só colocar o "new Pimaco" fora do foreach, mas vamos fazer o seguinte, vou enviar para o teu e-mail um código que deve resolver o problema

  • Olá Diogo. Estou precisando gerar etiquetas no estilo dos correios e acho que sua biblioteca pode ajudar muito. Porém, olhando no site da Pimaco, ví que o modelo que chega perto das etiquetas dos correios é o modelo: "7070 - Etiquetas para fotos digitais". Seria uma boa se conseguisse implementar este template! Grande abraço amigo!

  • Boa noite, estou usando esse código com etiqueta pimaco 6182, porém são 14 por folha e no código carrega somente 12 por folha, onde estou errando, consegue me ajudar?

  • Boa noite. Estou usando sua biblioteca para gerar etiquetas. Sua biblioteca é compatível com DOMPDF? Fiz alguns testes e tive alguns problemas. Obrigado,