Página 3 de 5

Harupdf e boleto

Enviado: 28 Set 2012 10:01
por Toledo
JoséQuintas escreveu:Agora tem o logotipo de vários bancos, e o limite de 100kb do fórum não deixa anexar.
José, o limite era de 900 Kb, mas acabei aumentando para 2 Mb. Então tenta anexar e se não conseguir, deixa um recado aqui.

Abraços,

Harupdf e boleto

Enviado: 28 Set 2012 10:30
por HASA
:)) :-Y
José meus parabéns ficou excelente,
:*
Hasa

Harupdf e boleto

Enviado: 28 Set 2012 10:37
por JoséQuintas
Agora com o logotipo de todos os bancos.
Este mesmo arquivo não aceitou antes.

Harupdf e boleto

Enviado: 28 Set 2012 13:13
por asimoes
José,

Parabéns pela contribuição.

Com certeza vai ajudar muitos aqui do forum.

[]´s

Harupdf e boleto

Enviado: 02 Out 2012 10:13
por HASA
:%
Bom dia, Ronaldo, compilei com Xharbour + bcc55 mas não gerou o PDF com a hbZebra.lib entrou no:
ELSE
ALERT( 'ERRO NA GERACAO DO ARQUIVO...;;' + cFilePdf ) <<<<<<<<< aqui !
ENDIF

Vou fazer algumas modificações para ver se descubro algo e posto mais tarde ok.

Hasa

Harupdf e boleto

Enviado: 02 Out 2012 11:49
por HASA
:))
IMPRIMUIUUUU, é que eu criei uma pasta para esse teste descompactando o .rar direto nela, nem me atendei, descuple, falha nossa.

:(
Mas... não imprimiu o código de barras.

Hasa

Harupdf e boleto

Enviado: 03 Out 2012 12:05
por HASA
:-O

Bom dia, não tenho o Harbour instalado uso a Minigui Extend que já vem com seus binarios para xHarbour, e nele já vem a hbZebra.lib para xHarbour, aparentemente está tudo ok,
:{
Hasa

Harupdf e boleto

Enviado: 04 Out 2012 22:34
por Imatech
Modificações cumulativas adicionadas a classe boleto...

1 - Ajuste de variaveis não declaradas para diretivas de compilação: -w1 -es2
2 - Alocação dinamica para as linhas/imagens do boleto...
3 - Impressão de datas com 4 digitos
4 - Criado arquivo demo.prg para uso da classe
5 - Criado arquivo Build.Bat para compilação do exemplo de uso...
6 - Opção para impressão do código de barras desenhando as Barras Interleaved 2 de 5 ( Febraban )
7 - Opção para impressão do código de barras usando a lib: hbZebra (elimina o uso de imagens .jpg na geração)
8 - etc...

Sujestão: Incorporar ao projeto Harbour Boleto...

1 - Abaixo as 03 formas encontradas para se gerar o código de barras...

1.1 - Utilizando imagens .jpg
1.2 - Utilizando a Lib hbZebra: Código Interleaved 2 de 5 (manual febraban)
1.3 - Desenhando as Barras: Código Interleaved 2 de 5 (manual febraban)

2 - Demo/Executavel (Alem do .exe precisa da pasta resources para logotipo do banco - copiar de: projetos )
Demo.rar
Projeto demo compilado ( executavel )
(905.81 KiB) Baixado 478 vezes
1.1 - Fontes com uso de imagens para gerar código de barras
1.1.1 - Projeto ( posts anteriores )
1.1.2 - Boleto Teste ( posts anteriores )

1.2 - Fontes com uso da lib Zebra para gerar código de barras (dispensa o uso de arquivos .jpg)
1.2.1 - Projeto
hb_boleto_Zebra_itf_2_5.rar
Sources: Zebra Interleaved 2-5
(529.56 KiB) Baixado 443 vezes
1.2.2 - Boleto Teste
boleto_Zebra_itf_2_5.pdf
Boleto: Zebra Interleaved 2-5
(33.44 KiB) Baixado 373 vezes
1.3 - Fontes: Desenhando as Barras: Código Interleaved 2 de 5 (dispensa o uso de arquivos .jpg)
1.3.1 - Projeto
hb_boleto_Int_2_5.rar
Sources: Interleaved 2-5
(3.96 KiB) Baixado 462 vezes
1.3.2 - Boleto Teste
boleto_Int_2_5.pdf
Boleto: Interleaved 2-5
(34.47 KiB) Baixado 371 vezes

Harupdf e boleto

Enviado: 04 Out 2012 23:23
por JoséQuintas
Ainda falta homologar no banco.
Um amigo já deu um toque que alguns bancos exigem o código de barras mais próximo ao final da página.
Então tem que ajustar os boletos mais pra baixo.

Já criei outra opção para o código de barras, usando somente uma única foto preta 50x50 criada no Paint.
Parece que o Itaú é o menos exigente, ainda bem que vou começar por ele.

Harupdf e boleto

Enviado: 05 Out 2012 17:23
por asimoes
Ronaldo,

Fiz um teste com os fontes abaixo:
Fontes: Desenhando as Barras: Código Interleaved 2 de 5 (dispensa o uso de arquivos .jpg)
e a barra diverge do pdf boleto_zebra_itf_2_5-2.pdf

O meu leitor de código barras só está lendo o pdf da zebra.

Pode ser algo relacionado ao espaçamento das barras.

pdf gerado pelos fontes que dispensam jpg
Imagem
pdf zebra
Imagem

Harupdf e boleto

Enviado: 05 Out 2012 17:39
por Imatech
Olá ASimoes !

Realmente: apesar da sequencia de barras estar identica, o espaçamento esta um pouco diferente...

Correção em meu proximo post...
Código de Barras: Função2_5 x Zebra
Código de Barras: Função2_5 x Zebra
Sucesso...

Harupdf e boleto

Enviado: 05 Out 2012 19:11
por asimoes
Olá Ronaldo,

Alterei o valor de nspace da função F_Gen_Barr_Code para .72 e HPDF_Page_SetLineWidth( oPdf_Page, 0.40)
Assim o leitor conseguiu ler.

Harupdf e boleto

Enviado: 05 Out 2012 19:22
por JoséQuintas
O código de barras até que não é complicado

- O início do código de barras usa 4 barras finas
- O final é uma barra larga e mais 2 finas
- Cada número é representado por 5 barras, sendo sempre 2 largas e 3 finas.
- O "interleave 2Of5", seria barras intercaladas de dois números. Supondo que as barras de um número fossem AAAAA e do outro BBBBB, na hora de imprimir seria um de cada: ABABABABAB.
- A barra larga precisa ser 2 a 3 vezes a largura da barra fina, mas sempre a mesma proporção no código inteiro.
- Por fim, é só uma barra branca, outra preta, branca, preta, etc. Só ficar trocando a cor na hora de imprimir.

O maior problema mesmo é evitar que o desenho seja deformado na impressão.

Aqui a rotina que montei. Pode ser interessante pra criar pra outros códigos.
E olhando a explicação acima, vai ficar fácil de entender o que ela faz.
Ela codifica os números, intercala cada par de números, e acrescenta início e fim.

Código: Selecionar todos

Function BarCode(cBarras)
   Local cBarCodeI25 := "", nCont, nCont2, cBarCodeNumber, cBarNumberA, cBarNumberB
   cBarCodeNumber     := Array(10)
   cBarCodeNumber[1]  := "FFLLF"
   cBarCodeNumber[2]  := "LFFFL"
   cBarCodeNumber[3]  := "FLFFL"
   cBarCodeNumber[4]  := "LLFFF"
   cBarCodeNumber[5]  := "FFLFL"
   cBarCodeNumber[6]  := "LFLFF"
   cBarCodeNumber[7]  := "FLLFF"
   cBarCodeNumber[8]  := "FFFLL"
   cBarCodeNumber[9]  := "LFFLF"
   cBarCodeNumber[10] := "FLFLF"
   For nCont = 1 To Len(cBarras) - 1 Step 2
      cBarNumberA = cBarCodeNumber[Val(Substr(cBarras, nCont, 1))+1]
      cBarNumberB = cBarCodeNumber[Val(Substr(cBarras, nCont + 1, 1))+1]
      For nCont2 = 1 To 5
         cBarCodeI25 += Substr(cBarNumberA, nCont2, 1) + Substr(cBarNumberB, nCont2, 1)
      Next
   Next
   cBarCodeI25 := "FFFF" + cBarCodeI25 + "LFF" 
   Return cBarCodeI25
O resultado é apenas uma lista informando se vai ser barra larga ou fina.
Na hora de imprimir, só ir variando entre branca/preta.

Ao que me parece, a zebra usa a lógica acima e acaba retornando um array com as coordenadas das barras pretas.
Mas como é a zebra que chama a rotina, talvez ela ajuste a resolução do PDF também.

O problema de resolução seria igual ter uma tela de 80 colunas e precisar colocar 81 caracteres.
Triplicando a resolução (algo como compactar letra), aonde caberiam 80 caracteres, passam a caber 240.
É legal... principalmente quando funciona...

Harupdf e boleto

Enviado: 05 Out 2012 20:07
por asimoes
Para permitir caracteres acentuados na classe PdfBoletoClass : "WinAnsiEncoding"

Código: Selecionar todos

Method New() Class PdfBoletoClass
   ::oPdf           := HPDF_New()
   HPDF_SetCompressionMode( ::oPdf, HPDF_COMP_ALL )
   ::nAngulo         := 90
   ::nRadiano        := 0 // ::nAngulo / 180 * 3.141592
   ::oFontName       := HPDF_GetFont(::oPdf,"Helvetica","WinAnsiEncoding")
   ::nFontSizeLarge  := 12
   ::nFontSizeSmall  := 6
   ::nFontSizeNormal := 8
   Return Self

Harupdf e boleto

Enviado: 05 Out 2012 20:32
por Imatech
Olá ASimoes !

Fontes atualizados...
O melhor resultado que obtive foi com os parametros abaixo ( testado e aprovado em leitores de código de barras ):

nSpace := 0.712
HPDF_Page_SetLineWidth( oPdf_Page, nspace * 1.06 )

DownLoad:
https://pctoledo.org/forum/viewto ... 577#p78577

Resultado impresso desejado para as Barras:
Altura: 13mm
Largura: 103mm
Resultado dos ajustes:
Código de Barras: Função2_5 x Zebra
Código de Barras: Função2_5 x Zebra
Código de Barras:
É uma forma de representação gráfica de dígitos numéricos, composta de várias barras verticais dispostas paralelamente, cujas dimensões são sempre de 103mm de comprimento e 13mm de altura, contendo informações relativas à cobrança a serem lidas por um leitor de código de barras laser.

As informações que fazem parte do código de barras são:
Posição Conteúdo
01 a 03 Número do banco
04 a 04 Código da Moeda - 9 para Real
05 a 05 Digito verificador do Código de Barras
06 a 19 Valor (12 inteiros e 2 decimais)
20 a 44 Campo Livre definido por cada banco
Ficha de Compensação
A ficha de compensação fica em poder do banco para que seja encaminhado para a compensação do bancária, quando o boleto é pago.

A ficha de compensação deve conter as seguintes dimensões:

Altura - mínima de 95mm e máxima de 108mm;
Largura - mínima de 210mm para o papel tipo A4.

A ficha de compensação é sempre padronizada e deve obedecer as regras de cada Banco, cujas dimensões são 3 3/4'' a 4 2/8'', exibindo o código de barras e a linha digitável que informam os dados para a identificação automática da conta para crédito a ser utilizada na compensação bancária.