Como conseguir os campos: CodigoBarras e LinhaDigitável

65 views
Skip to first unread message

Tubão - Rafael Canali

unread,
Aug 1, 2011, 2:18:29 PM8/1/11
to JRimum Community
Olá,

gostaria de saber como faço para após a geração do boleto, eu
conseguir os valores dos campos Código de Barras e Linha Digitável,
pois necessitarei salvar essas informações para enviar a um sistema de
apoio? Estou usando a versão 0.2.3 - Hélio.

Agradeço a atenção

Misael Barreto de Queiroz

unread,
Aug 1, 2011, 2:22:45 PM8/1/11
to Tubão - Rafael Canali, JRimum Community
Olá Rafael,

É simples cara. No caso você faz "boleto.getCodigoDeBarras.write()".  A mesma coisa serve pra linha digitável.

Tenta aí.
Qualquer coisa só avisar.




Misael Barreto
JRimum Developer
www.jrimum.org
P Antes de imprimir, pense em seu compromisso com o meio ambiente


Rafael Canali

unread,
Aug 3, 2011, 9:30:20 AM8/3/11
to Misael Barreto de Queiroz, JRimum Community
Opa, valeu, brigado mesmo... Estava muito corrido e não tinha conseguido parar pra ver os atributos e as classes, mas isso resolveu o meu problema... Estou com outro agora, e acho que é um pouco mais complicado... Estava olhando o exemplo de visualização no browser e pelo que entendi, o viewer irá mostrar o arquivo em pdf, seria isto? Não tem como eu exportar para html e pegar esse html exportardo e jogá-lo como uma string pra mostrar em um tela (xhtml) do meu sistema mesmo?? o viewer abre com opção de download e impressão? 

Fico no aguardo das respostas, abraço.

Misael Barreto de Queiroz

unread,
Aug 3, 2011, 2:11:04 PM8/3/11
to Rafael Canali, JRimum Community
Olá Rafael,

No caso o viewer te devolve um PDF (arquivo, stream, array de bytes), daí você pode definir, na sua aplicação web, se quer exibí-lo ou oferecer o download. Essa definição é feita setando parâmetros de cabeçalho HTML. Exemplo:

Opção de DOWNLOAD

response.setHeader("Content-Disposition", "attachment;filename=\""+ "meuboleto.pdf" + "\"");

Opção para VISUALIZAR
response.setHeader("Content-Disposition", "filename=\""+ "meuboleto.pdf" + "\"");


Abaixo te passo um rotina que criamos pra visualizar/baixar arquivos na web. No caso nós trabalhamos com JSF, mas se baseando nela você creio que você vai conseguir resolver o problema.


============================
Chamada a método utiliário
============================

getFile(FileWebOperation.VIEW, "Cobranca.pdf", boletoViewer.getPdfAsByteArray(), FacesUtil.getFacesContext());


==================
Método Utilitário
==================

public enum FileWebOperation {DOWNLOAD, VIEW};
  
public static synchronized void getFile(FileWebOperation fileWebOperation, String filename, byte[] bytesArquivo, FacesContext facesContext) throws IOException {
    // Contexto.
    ExternalContext context = facesContext.getExternalContext();
    HttpServletResponse response = (HttpServletResponse) context.getResponse();
  
    // Obtendo e informando o tipo do arquivo.
    String mimeType = getMimeType(bytesArquivo);
    // Ex: "application/pdf"
    response.setContentType(mimeType);

    String filenameWithExtension = null;
    if (filename.contains(".")) {
        filenameWithExtension =  filename;
    } else {
        filenameWithExtension =  filename + "." + getMimeTypeExtension(bytesArquivo);
    }  
      
    if (fileWebOperation == FileWebOperation.DOWNLOAD) {
        // Informando o header e o nome que vai aparecer no momento do donwload.
        response.setHeader("Content-Disposition", "attachment;filename=\""+ filenameWithExtension + "\"");
    }
    else if (fileWebOperation == FileWebOperation.VIEW) {
        response.setHeader("Content-Disposition", "filename=\""+ filenameWithExtension + "\"");
    }

    // Informando o tamanho do arquivo.
    response.setContentLength(bytesArquivo.length);

    OutputStream out = response.getOutputStream();
    out.write(bytesArquivo);
    out.flush();
    out.close();

    facesContext.responseComplete();
}



Qualquer dúvida é só falar.
Um abraço.

Misael Barreto de Queiroz

unread,
Aug 3, 2011, 5:06:22 PM8/3/11
to Rafael Canali, Misael Barreto, JRimum Community
Olá Rafael,

Não, no caso a JVM não vai trabalhar com visualização não.
O único pré-requisito é o navegador poder estar apto a visualizar arquivos pdf, e isso hoje é comum.

Faz um "test-drive" aí. Acessa a página abaixo e tenta carregar o "Edital de Abertura".
http://www.concursosfcc.com.br/concursos/trt1r111/index.html

É essa a idéia?


Qualquer dúvida é só falar.
Um abraço.


Misael Barreto
JRimum Developer
www.jrimum.org
P Antes de imprimir, pense em seu compromisso com o meio ambiente





Em 03/08/2011 17:44, Rafael Canali escreveu:
Certo, entendi como funciona, mas me tira uma dúvida, pra abrir o viewer para o usuário, é necessário eu instalar alguma coisa nas máquinas dos usuários, ou a jvm se encarrega de possibilitar a visualização?

Rafael Canali

unread,
Aug 4, 2011, 3:21:28 PM8/4/11
to JRimum Community
Opa, valeu cara, brigadão mesmo... Fiz baseado no que vc mandou, apenas colocando o boleto para abrir em uma nova aba, ficou excelente...

Misael Barreto de Queiroz

unread,
Aug 4, 2011, 4:09:35 PM8/4/11
to jrimum-c...@googlegroups.com

Fala Rafael,

Po cara, show de bola meu. Que bom que deu tudo certo.
Se precisar de algo mais é só avisar cara.

Um abraço

Misael Barreto
JRimum Developer
www.jrimum.org

Antes de imprimir, pense em seu compromisso com o meio ambiente


----- Mensagem original -----
De: "Rafael Canali" <rafac...@gmail.com>
Para: "JRimum Community" <jrimum-c...@googlegroups.com>
Enviadas: Quinta-feira, 4 de Agosto de 2011 16:21:28
Assunto: Re: Como conseguir os campos: CodigoBarras e LinhaDigitável

Olá Rafael,

É essa a idéia?

Olá Rafael,

    facesContext.responseComplete();
}

Misael Barreto
JRi mum Dev eloper


www.jrimum.org P   Antes de imprimir, pense em seu compromisso com o
meio ambiente


Em 03/08/2011 10:30, Rafael Canali escreveu:

Opa, valeu, brigado mesmo... Estava muito corrido e não tinha conseguido
parar pra ver os atributos e as classes, mas isso resolveu o meu
problema... Estou com outro agora, e acho que é um pouco mais
complicado... Estava olhando o exemplo de visualização no browser e pelo
que entendi, o viewer irá mostrar o arquivo em pdf, seria isto? Não tem
como eu exportar para html e pegar esse html exportardo e jogá-lo como
uma string pra mostrar em um tela (xhtml) do meu sistema mesmo?? o
viewer abre com opção de download e impressão? 


Fico no aguardo das respostas, abraço.


Em 1 de agosto de 2011 15:22, Misael Barreto de Queiroz <
misael...@tjrn.jus.br > escreveu:

Olá Rafael,

É simples cara. No caso você faz "boleto.getCodigoDeBarras.write()".  A
mesma coisa serve pra linha digitável.

Tenta aí.
Qualquer coisa só avisar.


Misael Barreto
JRi mum Dev eloper
www.jrimum.org

P   Antes de imprimir, pense em seu compromisso com o meio ambiente


Em 01/08/2011 15:18, Tubão - Rafael Canali escreveu:

Olá, gostaria de saber como faço para após a geração do boleto, eu
conseguir os valores dos campos Código de Barras e Linha Digitável, pois
necessitarei salvar essas informações para enviar a um sistema de apoio?
Estou usando a versão 0.2.3 - Hélio. Agradeço a atenção


-- Você está recebendo esta mensagem porque se inscreveu no grupo
"JRimum Community" dos Grupos do Google.
Para postar neste grupo, envie um e-mail para
jrimum-c...@googlegroups.com. Para cancelar a inscrição nesse
grupo, envie um e-mail para
jrimum-communi...@googlegroups.com. Para obter mais opções,
visite esse grupo em
http://groups.google.com/group/jrimum-community?hl=pt-BR.

Ceballos

unread,
Aug 5, 2011, 8:44:40 AM8/5/11
to JRimum Community
Misael,

em relação ao "boleto.getCodigoDeBarras.write()", ele apresenta alguns
números do código de barras, mas de forma desconexa, não da forma que
é apresentado no boleto em PDF.

No meu caso tive que criar um algoritmo, acessando os valores no
objeto "CodigoDeBarras" (usando "codBarrasObj.get(index).getValue()").
Este algoritmo organiza os números na mesma ordem em que são
apresentados no boleto impresso. AINDA ASSIM não consegui ter acesso
aos dígitos verificadores de cada campo do código, ou seja, meu código
de barras, se apresentado a partir dessa abordagem, fica incompleto!

Se eu quiser apresentar o código de barras no sistema, só posso fazê-
lo gerando um PDF?

Agradeço sua atenção,

Alejo Ceballos

On Aug 1, 3:22 pm, Misael Barreto de Queiroz
<misaelquei...@tjrn.jus.br> wrote:
> Olá Rafael,
>
> É simples cara. No caso você faz "boleto.getCodigoDeBarras.write()".  A
> mesma coisa serve pra linha digitável.
>
> Tenta aí.
> Qualquer coisa só avisar.
>
> Misael Barreto
> *JRimum **Developer*www.jrimum.org<http://www.jrimum.org>
> *P***Antes de imprimir, pense em seu compromisso com o meio ambiente

Gilmar P.S.L.

unread,
Aug 5, 2011, 9:17:31 AM8/5/11
to jrimum-c...@googlegroups.com
Olá Ceballos,

Isso é porque o que vc quer é a representação numérica do código de barras: a famosa "linha digitável".

Então para apresentar em seu sistema em lugar de vc utilizar o "boleto.getCodigoDeBarras.write()", vc deve utilizar o a seguinte chamada:

boleto.getLinhaDigitavel().write();

Para entender melhor a relação Código de Barras & Linha Digitável veja:

http://www.jrimum.org/bopepo/wiki/Componente/Documentacao/Negocio

Atenciosamente
------------------------------------------------------
Gilmar P.S.L.



2011/8/5 Ceballos <alejoce...@gmail.com>

Rafael Canali

unread,
Aug 5, 2011, 9:52:05 AM8/5/11
to jrimum-c...@googlegroups.com
Opa Gilmar,


os relatórios estão sendo gerados blz, mas estou com problema nas instruções(1 a 8) e no LocalPagamento do boleto. Já debuguei e ainda não encontrei aonde seria o problema, até o momento em que o boleto é enviado para geração do pdf está tudo ok, porém depois que pego o array de bytes e jogo pro browser as strings ficam todas concatenadas e sem espaço, por exemplo:

boleto.setInstrucao1("NÃO RECEBER APÓS DATA");

no browser a visualização da instrução no boleto fica:

NÃORECEBERAPÓSADATA

tem idéia do que pode ser?

Rafael Canali

unread,
Aug 5, 2011, 9:58:09 AM8/5/11
to jrimum-c...@googlegroups.com
Cara, descobri que o problema ocorre apenas no chrome, no firefox funciona corretamente, não sei se alguém ai tem alguma idéia do que possa ser feito para corrigir isso?

Gilmar P.S.L.

unread,
Aug 5, 2011, 10:00:10 AM8/5/11
to jrimum-c...@googlegroups.com
Você poderia passar um boleto como exemplo?
2011/8/5 Rafael Canali <rafac...@gmail.com>

Rafael Canali

unread,
Aug 5, 2011, 10:26:07 AM8/5/11
to jrimum-c...@googlegroups.com
Uma curiosidade, o problema acontece apenas na visualização no Chrome, ao exportar para pdf o boleto ficou OK. Sendo assim, acredito que não será um problema, pois a visualização é apenas para conferência dos valores. No firefox, o boleto é visualizado e exportado sem erros, acredito que seja algo específico na codificação do Chrome que gere o "erro" na visualização.

Rafael Canali

unread,
Aug 5, 2011, 10:40:29 AM8/5/11
to jrimum-c...@googlegroups.com
Gilmar, 
a sobrescrita de campos, apenas altera os valores, não é possível aumentar o tamanho do campo, ou de linhas, certo?? Observe o anexo (Boleto Original.jpg) que estou enviando, a parte "Local de Pagamento" é um pouco maior do que no modelo que está sendo gerado. Não cheguei em uma conclusão de como eu deveria passar as informações para o boleto, a instrução que estou mandando para o local de pagamento foi cortada por ser muito grande. Como podemos resolver isso, passar essa informação como instrução e não local de pagamento? Já trataram algo parecido?

estou enviando também um boleto que gerei com as informações do local de pagamento cortado. (Boleto.jpg)
boleto.pdf
Boleto Original.jpg

Gilmar P.S.L.

unread,
Aug 5, 2011, 10:45:46 AM8/5/11
to jrimum-c...@googlegroups.com
Olá Rafael,

Sim, podemos resolver isso. Na verdade esse tipo de situação demonstra que vc precisa de um template personalizado. Ou seja, vc precisa editar o documento de boleto para suas necessidades. Veja como em:

http://jrimum.org/bopepo/wiki/Componente/Documentacao/Tutoriais/GeracaoDeBoletoPersonalizado


Atenciosamente
------------------------------------------------------
Gilmar P.S.L.



2011/8/5 Rafael Canali <rafac...@gmail.com>
Reply all
Reply to author
Forward
0 new messages