Fonte Código de Barras Code128

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

andersoncamilo
Usuário Nível 3
Usuário Nível 3
Mensagens: 103
Registrado em: 22 Ago 2004 11:54

Fonte Código de Barras Code128

Mensagem por andersoncamilo »

Boa tarde a todos,

Estou tendo problemas com a leitutra do codigo de barras do danfe gerado pelo hbnfe, utilizo xharbour 1.21 e a fonte Code128bWin com o tamanho 8, se alguém tiver outra fonte, ou alguma configuração diferente e puder me ajudar eu agradeço.


Obrigado

Anderson Camilo
andersoncamilo
Usuário Nível 3
Usuário Nível 3
Mensagens: 103
Registrado em: 22 Ago 2004 11:54

Fonte Código de Barras Code128

Mensagem por andersoncamilo »

Resolvido

Bom dia a todos,

Na verdade o problema não era a fonte, e sim a falta de codificação do código antes de mandar imprir.

Segue a baixo a rotina para a codificação:

Código: Selecionar todos

****************************************
function CodificaCode128c(pcCodigoBarra)      
****************************************

&&  Parameters de entrada : O codigo de barras no formato Code128C "somente numeros" campo tipo caracter
&&  Retorno               : Retorna o código convertido e com o caracter de START e STOP mais o checksum
&&                        : para impressão do código de barras utilizando a fonte Code128bWin, é necessário
&&                        : para utilizar essa fonte os arquivso Code128bWin.ttf, Code128bWin.afm e Code128bWin.pfb
&& Autor                  : Anderson Camilo
&& Data                   : 19/03/2012 
&& Referencia             :  Site/artigo utilizado como referencia, http://grandzebu.net/index.php?page=/informatique/codbar-en/code128.htm  e Outros

local  nI :=0, checksum :=0, nValorCar :=0, cCode128 := '', cCodigoBarra :=''

cCodigoBarra = pcCodigoBarra
if len(cCodigoBarra) > 0    && Verifica se os caracteres são válidos (somente números)
   if int(len(cCodigoBarra) / 2) = len(cCodigoBarra) / 2    && Tem ser par o tamanho do código de barras
      for nI = 1 to len(cCodigoBarra)
          if (Asc( substr ( cCodigoBarra, nI, 1) ) < 48 .or. Asc( substr ( cCodigoBarra, nI, 1) ) > 57)
             nI = 0
	         exit
          endif		  
      next nI
   endif
   if nI > 0 
      nI = 1 &&  nI é o índice da cadeia
      cCode128 = chr(155)
	   
      do while nI <= len ( cCodigoBarra )
         nValorCar = val ( substr( cCodigoBarra, nI, 2) )
         if nValorCar = 0
            nValorCar += 128 
          elseif nValorCar < 95
                 nValorCar += 32 
          else   
                 nValorCar +=  50 
         endif
         cCode128 += Chr(nValorCar)
         nI = nI + 2
      enddo
	   
      && Calcula o checksum  
      for nI = 1 to len(cCode128)
          nValorCar = asc ( substr( cCode128, nI, 1 ) )
          if nValorCar = 128
             nValorCar = 0
           elseif nValorCar < 127
                  nValorCar -= 32 
           else 
                  nValorCar -=  50 
          endif
				   
          if nI = 1 
		     checksum = nValorCar
          endif			  
          checksum = mod( (checksum + (nI - 1) * nValorCar ) , 103)
       next nI 
	   &&  Cálculo código ASCII do checkSum

       if checksum = 0
          checksum += 128 
        elseif checksum < 95
               checksum += 32 
        else   
               checksum +=  50 
       endif

       && Adiciona o checksum e STOP
   
       cCode128 = cCode128 + Chr(checksum) +  chr(156)  
    endif 
endif

return cCode128


Este código ai comtempla somente a codifcação Code128C (Somente Números), se alguém precisar para Code128B (Com letras) tenho ela também.

Obrigado

Anderson Camilo
hs_paulo
Usuário Nível 1
Usuário Nível 1
Mensagens: 25
Registrado em: 02 Set 2015 17:11
Localização: Bauru

Fonte Código de Barras Code128

Mensagem por hs_paulo »

Ola Anderson

Estou precisando da rotina 128B letras e numeros.

Obrigado

Paulo
Responder