e-junior 0 Denunciar post Postado Outubro 13, 2008 E ai pessoal tudo bom??? alguem já teve q criar código de barra de produtos com FPDF para impressão em etiquetas???? Bom o problema q estou tendo e q peguei um exemplo no site do FPDF só que pelo oq vi e li não tem como colocar o conteudo em tabelas ou celulas para poder controlar o espaçamento de um codigo com o outro e a quantidade em cada linha. Se alguem que já passou por isso tiver alguma dica q possa ajudar eu agradeco. t++ abracos... Compartilhar este post Link para o post Compartilhar em outros sites
nknk 3 Denunciar post Postado Outubro 13, 2008 você pode instalar a fonte do código de barras e na hora que for imprimir ele imprime com a fonte de código de barras, só que é um processo complicado converter está fonte. Eu acabei desistindo e optei pelo word. Sobre etiquetas, elas são em tabelas, no exemplo que tem lá e dá para alterar os espaçamento, exceto um que não me lembro. Compartilhar este post Link para o post Compartilhar em outros sites
e-junior 0 Denunciar post Postado Outubro 13, 2008 entao nknk, instalar a fonte não tem nada haver, e quando disse colocar em tabelas e usar o FPDF para colocar o codigo de barra gerado em tabelas e celulas do FPDF mesmo "Cell()". O espacamento consigo controlar, mas nao consigo colocar em "Cell()" e a quantidade que vai em cada linha. Compartilhar este post Link para o post Compartilhar em outros sites
nknk 3 Denunciar post Postado Outubro 13, 2008 você falou de contéudo, o código de barra não é o contéudo? Poste o código para que possamos entender melhor. Compartilhar este post Link para o post Compartilhar em outros sites
e-junior 0 Denunciar post Postado Outubro 14, 2008 ##### PAGINA code13.php ##### <?php define('FPDF_FONTPATH','font/'); require('fpdf/fpdf.php'); class PDF extends FPDF{ function EAN13($x,$y,$barcode,$h=16,$w=.35){ $this->Barcode($x,$y,$barcode,$h,$w,13); } function UPC_A($x,$y,$barcode,$h=16,$w=.35){ $this->Barcode($x,$y,$barcode,$h,$w,12); } function GetCheckDigit($barcode){ //Compute the check digit $sum=0; for($i=1;$i<=11;$i+=2) $sum+=3*$barcode{$i}; for($i=0;$i<=10;$i+=2) $sum+=$barcode{$i}; $r=$sum%10; if($r>0) $r=10-$r; return $r; } function TestCheckDigit($barcode){ //Test validity of check digit $sum=0; for($i=1;$i<=11;$i+=2) $sum+=3*$barcode{$i}; for($i=0;$i<=10;$i+=2) $sum+=$barcode{$i}; return ($sum+$barcode{12})%10==0; } function Barcode($x,$y,$barcode,$h,$w,$len){ //Padding $barcode=str_pad($barcode,$len-1,'0',STR_PAD_LEFT); if($len==12) $barcode='0'.$barcode; //Add or control the check digit if(strlen($barcode)==12) $barcode.=$this->GetCheckDigit($barcode); elseif(!$this->TestCheckDigit($barcode)) $this->Error('Incorrect check digit'); //Convert digits to bars $codes=array( 'A'=>array( '0'=>'0001101','1'=>'0011001','2'=>'0010011','3'=>'0111101','4'=>'0100011', '5'=>'0110001','6'=>'0101111','7'=>'0111011','8'=>'0110111','9'=>'0001011'), 'B'=>array( '0'=>'0100111','1'=>'0110011','2'=>'0011011','3'=>'0100001','4'=>'0011101', '5'=>'0111001','6'=>'0000101','7'=>'0010001','8'=>'0001001','9'=>'0010111'), 'C'=>array( '0'=>'1110010','1'=>'1100110','2'=>'1101100','3'=>'1000010','4'=>'1011100', '5'=>'1001110','6'=>'1010000','7'=>'1000100','8'=>'1001000','9'=>'1110100') ); $parities=array( '0'=>array('A','A','A','A','A','A'), '1'=>array('A','A','B','A','B','B'), '2'=>array('A','A','B','B','A','B'), '3'=>array('A','A','B','B','B','A'), '4'=>array('A','B','A','A','B','B'), '5'=>array('A','B','B','A','A','B'), '6'=>array('A','B','B','B','A','A'), '7'=>array('A','B','A','B','A','B'), '8'=>array('A','B','A','B','B','A'), '9'=>array('A','B','B','A','B','A') ); $code='101'; $p=$parities[$barcode{0}]; for($i=1;$i<=6;$i++) $code.=$codes[$p[$i-1]][$barcode{$i}]; $code.='01010'; for($i=7;$i<=12;$i++) $code.=$codes['C'][$barcode{$i}]; $code.='101'; //Draw bars for($i=0;$i<strlen($code);$i++){ if($code{$i}=='1') $this->Rect($x+$i*$w,$y,$w,$h,'F'); } //Print text uder barcode $this->SetFont('Arial','',12); $this->Text($x,$y+$h+11/$this->k,substr($barcode,-$len)); } } ?> ##### PAGINA codigo_barra.php ##### <?php require('inc/code13.php'); //ARQUIVO DE CONEXAO DO BANCO DE DADOS require("../setup.php"); $sql = mysql_query("SELECT CO_PRODUTO FROM 00_tb_produto WHERE ST_PRODUTO = 'A' ORDER BY CO_PRODUTO"); $row = mysql_num_rows($sql); //VERIFICA SE RETORNOU ALGUMA LINHA if(!$row){ echo "<script> alert('[Erro] - NÃO FOI ENCONTRADO NENHUM REGISTRO!'); window.location = 'inicio.php'; </script>"; die; } //NUMERO DE RESULTADOS POR PÁGINA $por_pagina = 60; //CALCULA QUANTAS PÁGINAS VÃO SER NECESSÁRIAS $paginas = ceil($row/$por_pagina); $pdf = new PDF(); //INICIALIZA AS VARIÁVEIS $linha_atual = 0; $inicio = 0; //PÁGINAS for($x=1; $x<=$paginas; $x++) { //VERIFICA $inicio = $linha_atual; $fim = $linha_atual + $por_pagina; if($fim > $row) $fim = $row; $pdf->Open(); $pdf->AddPage(); $top = 5; $left = 5; //EXIBE OS REGISTROS for($i=$inicio; $i<$fim; $i++) { $pdf->EAN13($left,$top,mysql_result($sql, $i, "CO_PRODUTO")); $top = $top+25; $linha_atual++; } } $pdf->Output(); ?> Compartilhar este post Link para o post Compartilhar em outros sites
Prof. Baco 0 Denunciar post Postado Setembro 21, 2009 Nossa.... esta eu tirei do fundo do baú.... kakakaka.... mas eu peguei ela e funcionou perfeitamente. Agora eu estou com um problema é que o meu sistema gera o código do produto automatico. Ao gerar o código de barras que você passou e-junior ele completa com zeros a esquerda e ainda por cima um último dígito no código. Assim ao passar a leitora o sistema nao consegue encontrar o produto por causa disto. Teria como eu fazer esta impressao independente do tamanho do código do produto, com por exemplo 7, 10 ou 12 dígitos? Tentei alterar o código do seu script mas tá a msg: Incorrect check digit. O que você sugere??? Compartilhar este post Link para o post Compartilhar em outros sites
Prof. Baco 0 Denunciar post Postado Setembro 22, 2009 Oi... eu consegui resolver o problema parcialmente. Eu comentei a parte do código da página code13.php $barcode=str_pad($barcode,$len-1,'0',STR_PAD_LEFT); if($len==12) $barcode='0'.$barcode; //Add or control the check digit if(strlen($barcode)==12) $barcode.=$this->GetCheckDigit($barcode); elseif(!$this->TestCheckDigit($barcode)) $this->Error('Incorrect check digit');Ele imprime qualquer tamanho... sem problemas, só que a leitora de código de barras só lê se o arquivo tiver 13 caracteres. Se ele tiver menos ou mas a leitora de código de barras nao lê.Bom pelo menos consegui imprir, alguma outra sugestão para a leitura do código? Atenciosamente, Baco Compartilhar este post Link para o post Compartilhar em outros sites
e-junior 0 Denunciar post Postado Setembro 22, 2009 puts cara já tem 1 ano que postei isso se não fosse o lembrete que recebi do forum no meu e-mail não ia ver esse post seu. Então vamos lá, esse script que postei ai está no padrão EAN13 caso o código do seu produto sejá menor que 12digitos ele irá completar com 0(zero) à esquerda e o 13 dígito é o digito verificador. Bom pelo oq percebi você consegue gerar normal as etiquetas só q não consegue consultar seus produtos com base no valor que o leitor lê na sua aplicação isto é claro o código na etiqueta está com 0(zero) à esquerda e ainda com o dígito verificar para isso você deverá modificar sua aplicação que efetua a consulta. Uma sugestão e na hora da consulta você tratar na sua aplicação para ignorar o último digito que é o digito verificar e os 0(zero) que estão a esquerda você poderá tratar com alguma função SQL por exemplo "LPAD". Qualquer dúvida posta ai. abraço. Compartilhar este post Link para o post Compartilhar em outros sites
Prof. Baco 0 Denunciar post Postado Setembro 22, 2009 Blza eu pensei nisto também, mas aí eu entro na questão dos zeros a esquerda. Se eu retirá-los o sistema pode aceitar sem problemas, isto é fácil na programação. A questão é que se eu tiver produtos cujo o código começa com zero, aí "fudeu" :). Por exemplo se eu tiver os códigos dos produtos sendo: a. 716770038982 ele implementa o dígito ficando 7167700389828 b. 7898349000286 já é o código completo entao fica como esta c. 0102006 ele implementa mais zeros a esquerda e o dígito verificador ficando 0000001020069 d. 0007846 ele implementa mais zeros a esquerda e o dígito verificador ficando 0000000078467 Pensei em fazer a programação retirando o últido dígito e os zeros a esquerda mas aí eu esbarro no item c. e d. que já tem zeros a esquerda. O que sugere? Eu vi outros produtos que tem somente 5 e 7 dígitos no código de barras e a leitora leu estes códigos normalmente. Queria que fizesse isto tb nos meus produtos. Compartilhar este post Link para o post Compartilhar em outros sites
mimimimi 0 Denunciar post Postado Julho 21, 2014 com código de barras EAN 13 biblioteca profissional e simples, é fácil de imprimir print ean 13. agora há muitas bibliotecas de código de barras apoiar esta como google ZXing aplicativo de código de barras e assim por diante. Compartilhar este post Link para o post Compartilhar em outros sites