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: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

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, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, 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 116 vezes
Responder