Página 2 de 5
Harupdf e boleto
Enviado: 10 Set 2012 09:35
por HASA
:-O
Bom dia, eu coloquei (copiei daqui e colei) no meu prg que te enviei, compilou mas... não gerou o pdf :% , eu usei uma variavel m-> e você não, só troquei isso a unica coisa que tinha notado de diferente, vou rever então te falo. No zip que te enviei anteriormene mostra a criação de janela com fundo no caso vermelho que poderia ser trocado por branco e preto ok, esse prg é o teste original da pasta contrib do xharbour.
´o)
Harupdf e boleto
Enviado: 10 Set 2012 10:32
por JoséQuintas
Por aí se vê como o mercado está uma merd.
Esse boleto do borboleto.... o boleto emitido não atende uma lei que entrou, se não me engano, em 2008.
No caso de uma cobrança judicial, o cliente pode alegar simplesmente que não pagou porque o boleto está fora da lei.
No caso de não sair PDF:
Já coloquei antes: se o nome de uma imagem estiver errado, não sai pdf, e não dá mensagem de erro.
tem uma imagem, se não me engano codestart.jpg, que no seu fonte estava de um jeito e no arquivo estava de outro.
mas essa não serve pro boleto.
start e stop estão repetidos nas imagens por um motivo: um deles não dá pra usar, porque o tamanho da imagem é fora do padrão das outras.
No fonte aqui andei mexendo pra fazer outros testes. No momento tenho dois boletos pra testar o pagamento, com código de barras criados de formas diferentes. Acho que vou aproveitar e fazer um terceiro, com uma imagem que com certeza funciona, pra ver se o problema é a resolução do PDF, como comentaram no grupo harbour-users.
Harupdf e boleto
Enviado: 10 Set 2012 11:47
por HASA
:%
José na verdade peguei as imagens do HarbourBoleto que são Gif´s e passei para JPG para testar os tamanhos e nomes mantive os mesmos do projeto original apenas tentando disponibilizar uma maneira de imprimir o código de barras em Pdf como varios colegas dizem utilizar esse projeto com exito nem me atentei ok, eu não uso esse projeto nem os gifs nem os jpgs no meu sistema uso uma fonte Int 2-5 que não consegui fazer o Harupdf aceita-la nem a pal, se quizer te envio a fonte eu uso com xHarbour + Minigui Extend + bcc55 e funcional legal para impressão com a Miniprint.lib da Minigui e eu queria já imprimri em pdf, ok.
Hasa
:xau
Harupdf e boleto
Enviado: 10 Set 2012 12:21
por JoséQuintas
Teoricamente deveria ser mais fácil até.
Olhando o fonte da hbnfe dá pra ter uma idéia:
- Carregar o fonte, para que seja anexado ao pdf
- Escrever como se fosse um texto normal, apenas selecionando o fonte
O fonte I25 tem um detalhe especial: ele trabalha em pares de números, e intercala as 5 barras do par de números.
Por isso tem as fotos de 00 a 99, que seriam a combinação de 0+0..... 9+9
Para o fonte I25 é algo parecido a essas 99 fotos. Só que não se pode usar Chr(0) a Chr(99), então ele deve ter um esquema de conversão dos números do código de barras antes de passar ao fonte.
Algo como....
cConvertido = Converte(cNumeroCodBarras)
pdf_writetext(cConvertido,"fontebarras")
Usando fonte pode ser que facilite para o pdf fazer redimensionamento sem perda.
O fonte do código de barras da hbnfe utiliza 3 arquivos pra poder carregar o fonte pro pdf.
Mas só tem um jeito de saber se dá certo... tentando.
No meu servidor eu tenho uma rotina onde passo o número e a rotna retorna a imagem do código pronto.
Não testei se funciona no PDF, porque deixar dependente de internet não está nos planos.
Harupdf e boleto
Enviado: 10 Set 2012 21:33
por JoséQuintas
Alguém tem um número de código de barras válido?
Não é a linha digitável, é o número do código de barras.
Hoje testei boleto com duas formas diferentes de imprimir o código de barras, no caixa eletrônico.
Um deles nem leu, mas o outro acusou código de barras inválido.
Então... precisava de um número válido pra testar.
Harupdf e boleto
Enviado: 11 Set 2012 08:51
por andersoncamilo
Bom dia
No caso do código de barras Code128, você tem que fazer a conversão, se não os leitores não conseguem ler.
Abaixo segue a rotina para conversão do Code128 que é utilizado no HbNFe, foi eu quem a criei, teria que verificar quais as fontes você esta utilizando para verificar se não tem que fazer algo parecido, você pode utilizar um leitor de codigo de barras comum para testar se o código esta legível.
Qualquer coisa me envia as fontes que você esta utilizando que vou pesquisar se tem que fazer alguma conversão.
Segue um código valido de um boleto do banco do Brasil.
00194.57662 24501.911903 02499.702211 2 54570000015500
Anderson Camilo
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 arquivos Code128bWin.ttf, Code128bWin.afm e Code128bWin.pfb
&& Autor : Anderson Camilo
&& Data : 19/03/2012
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
Harupdf e boleto
Enviado: 11 Set 2012 09:31
por JoséQuintas
Tenho a impressão de que esse código do Banco do Brasil é o digitável.
Vou dar uma olhada nos fontes do harbourboleto pra conferir minha rotina.
Estou usando esta que fiz pelo manual do Itaú (parte da classe)
Note que a linha digitável não é o mesmo código que está no código de barras, então não serve como referência
Obs. cada banco e carteira tem seu critério de cálculo. Este seria do Itaú, carteira 109, se estiver correto.
Código: Selecionar todos
Method Calcula() Class BoletoClass
Local cBanco, cAgencia, cConta, cCarteira, cNossoNumero, cMoeda, cParte, cDigito, cBarras, cDigitavel
cBanco := StrZero(::nBanco,3)
cAgencia := StrZero(::nAgencia,4)
cConta := StrZero(::nConta,6)
cCarteira := StrZero(::nCarteira,3)
cNossoNumero := StrZero(::nNossoNumero,8)
cMoeda := Str(9,1) // Real
cBarras := cBanco + cMoeda + StrZero(::dDatVen-Ctod("07/10/1997"),4) + StrZero(::nValor*100,10)
cDigito := ::Modulo10( cAgencia + cConta + cCarteira + cNossoNumero )
cBarras += cCarteira + cNossoNumero + cDigito + cAgencia + cConta + "000"
cDigito := ::Modulo11(cBarras)
cBarras := Substr(cBarras,1,4) + cDigito + Substr(cBarras,5)
::cBarras := cBarras
cParte := cBanco + "9" + cCarteira + Substr(cNossoNumero,1,2)
cDigito := ::Modulo10(cParte)
cDigitavel := cParte + cDigito
cParte := Substr(cNossoNumero,3) + ::Modulo10( cAgencia + cConta + cCarteira + cNossoNumero ) + Substr(cAgencia,1,3)
cDigito := ::Modulo10(cParte)
cDigitavel += cParte
cParte := Substr(cAgencia,4) + cConta + "000"
cDigito := ::Modulo10(cParte)
cDigitavel += cParte
cDigitavel += Substr(cBarras,5,1)
cDigitavel += StrZero(::dDatVen-Ctod("07/10/1997"),4) + StrZero(::nValor*100,10)
::cDigitavel := cDigitavel
Return NIL
Harupdf e boleto
Enviado: 11 Set 2012 11:50
por depaula.jau
Bom dia!
José... eu estava estudando essa classe mas não deu tempo de terminar, por acaso você conhece? :
+++ Abaixo da Impressão normal das linhas texto
Código: Selecionar todos
hZebra := hb_zebra_create_code128( '1234567890123', Nil )
hb_zebra_draw_hpdf( hZebra, oPdfPage, 40, nLinhaPdf-700, 1.0, 30 )
// Função para Gerar Codigo de Barra em PDF
FUNCTION hb_zebra_draw_hpdf( hZebra, page, ... )
IF hb_zebra_GetError( hZebra ) != 0
RETURN HB_ZEBRA_ERROR_INVALIDZEBRA
ENDIF
hb_zebra_draw( hZebra, {| x, y, w, h | HPDF_Page_Rectangle( page, x, y, w, h ) }, ... )
HPDF_Page_Fill( page )
RETURN 0
é uma lib do Harbour que é usado junto com o HaruPDF e esses são os código que se pode usar :
Código: Selecionar todos
#define HB_ZEBRA_TYPE_EAN13 1
#define HB_ZEBRA_TYPE_EAN8 2
#define HB_ZEBRA_TYPE_UPCA 3
#define HB_ZEBRA_TYPE_UPCE 4
#define HB_ZEBRA_TYPE_CODE128 5
#define HB_ZEBRA_TYPE_CODE93 6
#define HB_ZEBRA_TYPE_CODE39 7
#define HB_ZEBRA_TYPE_CODE11 8
#define HB_ZEBRA_TYPE_CODABAR 9
#define HB_ZEBRA_TYPE_ITF 10
#define HB_ZEBRA_TYPE_MSI 11
Vou continuar acompanhando
Abs;
Marcelo de Paula
Harupdf e boleto
Enviado: 15 Set 2012 11:44
por HASA
:-O
Bom dia, pessoal semaninha puxada, alguma novidade, posso ajudar em algo mais ?
Excelente final de semana a todos,
:xau
Hasa
Harupdf e boleto
Enviado: 17 Set 2012 11:31
por JoséQuintas
No momento criei outra rotina:
- Tem a mesma, que utiliza as fotos de códigos de barras
- Tem outra, onde só utilizo uma barra preta, e desenho tudo.
Andei olhando o manual da harupdf, e encontrei como mudar a resolução do PDF, do default de 72 para 300.
Tinha outra diferença nas fotos, mas acabei de resolver.
Falta testar no caixa eletrônico com a nova resolução/correção.
Harupdf e boleto
Enviado: 17 Set 2012 13:19
por HASA
Ok, se puder ajudar estamos ai,
:)Pos
Hasa
Harupdf e boleto
Enviado: 27 Set 2012 13:34
por HASA
Boa tarde, José, você tem algum pequeno exemplo para eu tentar dar continuidade por aqui, é que estou querendo implementar emissão de boleto via PDF ( como disse já faço impressão e tela via Minigui ) mas gostaria de anexar o pdf do boleto em um email ok. Pode ser um pequeno "demo" com as imagens que te enviei (retiradas as invalidas) se posssivel claro, agradeço,
:{
Hasa
Harupdf e boleto
Enviado: 27 Set 2012 19:36
por JoséQuintas
Preparem os panos de chão, porque vão babar.
Testado e aprovado no leitor do caixa eletrônico.
Anexo o PDF totalmente gerado pela rotina.
Mudou bastante.
Agora tem o logotipo de vários bancos, e o limite de 100kb do fórum não deixa anexar.
Vou ver o que eliminar.
Harupdf e boleto
Enviado: 28 Set 2012 09:25
por HASA
:-O
Bom dia, José ficou lindo, mas... não era exatamente o que eu esperava, você não vai disponibilizar um DEMO.PRG ?
:'(
Hasa
Harupdf e boleto
Enviado: 28 Set 2012 09:59
por JoséQuintas
Como eu disse, aqui não aceitou o tamanho, por causa dos logotipos de bancos.
Agora deixei só o logotipo do Itaú.
Não sei se reparou nisso, mas tem 5 boletos no PDF.
É só criar a lista de boletos, e sai tudo num único PDF.