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
Fonte Código de Barras Code128
Moderador: Moderadores
-
andersoncamilo
- Usuário Nível 3

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

- Mensagens: 103
- Registrado em: 22 Ago 2004 11:54
Fonte Código de Barras Code128
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:
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
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
Obrigado
Anderson Camilo
Fonte Código de Barras Code128
Ola Anderson
Estou precisando da rotina 128B letras e numeros.
Obrigado
Paulo
Estou precisando da rotina 128B letras e numeros.
Obrigado
Paulo
