Código de Barras boleto bancário

Discussão sobre a biblioteca Fivewin - O Clipper para Windows.

Moderador: Moderadores

Shark
Usuário Nível 1
Usuário Nível 1
Mensagens: 28
Registrado em: 25 Set 2017 21:42
Localização: Brasília - DF

Código de Barras boleto bancário

Mensagem por Shark »

Por mais estranho que pareça, após todos os longos anos na carreira de programador, pela primeira vez tenho a real necessidade de imprimir um código de barras de boleto que seja legível para os leitores de celular etc e tal.

Após cansativas leituras e tentativas sem êxito, recorro aqui aos colegas no intuito de tirar esse fantasma da minha vida: CÓDIGO DE BARRAS DE BOLETO BANCÁRIO.

Alguém pode ajudar com uma solução definitiva que não envolva utilizar programas de terceiros acoplados aos meu?

Minha dúvidas é: o código de barras é uma real encriptação da linha digitáveis ou é necessário fazer algum ajuste?
Existe alguma lib que possa ser utilizada num ambiente xHarbour / Fivewin que gere a imagem desse código de barras?

No Aguardo de sugestões...
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20415
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP
Curtiram: 1 vez

Código de Barras boleto bancário

Mensagem por JoséQuintas »

Shark escreveu:Minha dúvidas é: o código de barras é uma real encriptação da linha digitáveis ou é necessário fazer algum ajuste?
Estranhei a pergunta, dá a impressão de que já tem a linha digitável, e não sabe fazer o código de barras.
Mas um não existe sem o outro, o que leva a concluir que não tem nada.
Shark escreveu:Existe alguma lib que possa ser utilizada num ambiente xHarbour / Fivewin que gere a imagem desse código de barras?
Tem a opção de usar fonte pra isso, algo como escrever um texto, mas ao invés de usar fontes comuns, usa a fonte pra código de barras.
José M. C. Quintas
Harbour 3.2, mingw, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (Linux/Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Shark
Usuário Nível 1
Usuário Nível 1
Mensagens: 28
Registrado em: 25 Set 2017 21:42
Localização: Brasília - DF

Código de Barras boleto bancário

Mensagem por Shark »

Exatamente isso José Quintas. Tenho a linha digitável mas não consigo gerar o código de barras. Teria algum exemplo para postar que demonstre como utilizar fontes para imprimir o código de barras? Além da dificuldade "gráfica" para gerar o código de barras, pelo que pesquisei, também é necessário inverter algumas posições dos números da linha digitável para gerar essas barras corretamente.

Agradeço antecipadamente... Aguardando uma solução concreta dos colegas. SharkAbraços!
Avatar do usuário
Mario Mesquita
Usuário Nível 4
Usuário Nível 4
Mensagens: 613
Registrado em: 08 Dez 2009 13:47
Localização: Rio de Janeiro

Código de Barras boleto bancário

Mensagem por Mario Mesquita »

Bom dia.

Eu uso essa em anexo. Muito boa, mas não sei por quê, não sai em PDF. Mas para impressos e outros formatos funciona bem.

Inclusive com três homologações, Santander, Caixa e Bradesco.

Saudações,
Mario.

Obs: Não permitiu anexar. Tenta achar na internet, catei isso por lá, mas não lembro de onde: Code_2_5.ttf
MarcioCezar
Usuário Nível 1
Usuário Nível 1
Mensagens: 9
Registrado em: 30 Abr 2021 20:32
Localização: Jaboatão dos Guararapes

Código de Barras boleto bancário

Mensagem por MarcioCezar »

Código: Selecionar todos


Exemplo de utilização:
CodigoBarra2I5( cLinhaDigitavel, oPrn, {  2750, 000 } )

FUNCTION CodigoBarra2I5( CodigoAuxiliar, oPrn, aCantos, nTamBarra )

   LOCAL obr
   LOCAL X := Col := Lar := nWidth := 0
   LOCAL oPen                   //2.549                            7.647
   LOCAL nComprimentoBarraFina := 3, nComprimentoBarraGrossa := 7.1

   DEFAULT nTamBarra := 130
   DEFAULT aCantos   := { 30, 30 }

   CodigoAuxiliar := Intercalado25( CodigoAuxiliar )

   DEFINE brush oBr color CLR_BLACK

   FOR X := 1 to Len( CodigoAuxiliar )

      IF SUBSTR( CodigoAuxiliar, X, 1 ) = '0'

         IF MOD( X, 2 ) <> 0
            oPrn:fillRect( { aCantos[1], aCantos[2], aCantos[1] + nTamBarra, aCantos[2] + nComprimentoBarraFina }, oBr )
         ENDIF

         aCantos[2] += nComprimentoBarraFina

      ELSE

         IF MOD( X, 2 ) <> 0
            oPrn:fillRect( { aCantos[1], aCantos[2],  aCantos[1] + nTamBarra,  aCantos[2] + nComprimentoBarraGrossa }, oBr )
         ENDIF

         aCantos[2] += nComprimentoBarraGrossa

     ENDIF

   NEXT

   oBr:End()

RETURN
Anexos
Intercalado25.Prg
(2.39 KiB) Baixado 122 vezes
Responder