Bruno Lustosa tem 29 anos, e programa desde os 8. Conhece diversas linguagens de programação, entre elas PHP, sendo certificado pela Zend(ZCE - Zend Certified Engineer). Trabalha com redes e desenvolvimento a 9 anos, e atualmente, coordena a área de desenvolvimento da HóspedeVIP, uma central de reserva de hotéis pela Internet.
Neste artigo, pretendo mostrar como imprimir qualquer tipo de conteúdo em impressoras que usam formulário contínuo. Seja nota fiscal, etiqueta, ou qualquer outra coisa, muitas vezes precisamos desenvolver uma aplicação que faça isso. O grande problema de imprimir nesse tipo de papel é saber onde a "folha" termina e começa a próxima.
A solução que eu usei pra resolver um problema de impressão de notas fiscais foi usar uma classe do PEAR chamada File_PDF, que como o próprio nome já deixa claro, serve para gerar arquivos PDF.
Como todos sabemos, o formato PDF é ideal para situações em que precisamos ter certeza de que ele sempre será impresso da mesma forma, independente da máquina onde é aberto. O problema em usar outros formatos (DOC do Word, por exemplo), é que as informações necessárias para a impressão não ficam no arquivo. Detalhes como as fontes usadas, os tamanhos, acabam dependendo de configurações de cada máquina.
Voltando ao problema, eu tinha um formulário de 10 páginas para testes, com um tamanho não muito usual, e os campos da nota fiscal que eu precisaria preencher.
Pra resolver o problema do posicionamento, não tem outro jeito, tem que medir com régua mesmo. A idéia é anotar as posições X e Y de cada campo, usando milímetros pra evitar números fracionários. O tamanho do papel tambem se mede com régua, não tem muito mistério.
Tendo o tamanho do papel e o posicionamento de cada campo, o grande truque é gerar um PDF dinamicamente, com "páginas" do tamanho da nossa nota fiscal, e depois posicionar os textos dentro dessa página.
No fim do script, teremos um PDF já todo pronto pra ser mandado para a impressora, tudo já formatado com o tamanho e posição corretas.
Segue o código, por partes.
PHP
require_once 'File/PDF.php'; 'unit' => 'mm', )); $pdf->setFont('Courier','',10);www.revistaphp.com.br
Até aqui, sem muitos mistérios. Incluí o arquivo da classe File_PDF, e instanciei um objeto em $pdf. A orientação do documento é P (de Portrait, ou "em pé"), a unidade que eu vou usar será milímetros, e o formato da minha folha é de 206 mm de altura por 165 mm de largura. Depois disso, eu escolho a fonte Courier 10 para o documento inteiro.
PHP
foreach ($venda as $item) { $pdf->addPage('P'); $pdf->text(171,44,$item['nome_cliente']); $pdf->text(171,49,'Prest. Serv.'); $pdf->text(171,57,$item['data']); ... }www.revistaphp.com.br
Agora, eu percorro um vetor ($venda) já criado com as informações que eu precisarei colocar na nota fiscal. Para cada entrada desse vetor, eu crio uma nova página com a mesma orientação (em pé). A partir daí, é só posicionar cada texto. Em 171 x 44, coloco o nome do cliente, em 171 x 49, a natureza da operação, em 171 x 57, a data da venda, e por aí vai.
PHP
$pdf->output('notas.pdf',false);www.revistaphp.com.br
Para terminar, dou a saída do documento. Marco o tipo da saída para "application/pdf", e mando o objeto soltar o documento para o navegador com o nome de "notas.pdf". O segundo parâmetro é se a saída é inline ou como um arquivo para download. Passamos false para que seja como download.
Se tudo deu certo, o seu navegador vai perguntar se você quer abrir ou salvar o PDF. Se abrir em algum programa como o Adobe Reader, basta imprimir diretamente do programa, e bingo. Resolvida a questão.