Snapshot 2011/04/15 - Novidades
Autor: Gilmar P. S. Leitão | Publicado: 2011-04-25T16:19:00-03:00

Esse novo build do Bopepo traz algumas novidades interessantes que vale a pena ficar por dentro. Dentre elas temos:
Novo banco: #58 - Bancoob 


Novo caso Caixa Econômica Federal: #54 - Cobrança Sem Registro Eletrônica SICOB (Nosso Número 16 posições)

&nbsp;Novas formas de uso da API:

#org.jrimum.bopepo.view.BoletoViewer

Estilo um pouco mais fluente, mas mantendo os mesmos métodos:
byte[] pdf = BoletoViewer.create(boleto)
.setTemplate(inBytes)
.setPdfFullCompression(false)
.getPdfAsByteArray();
Mais flexibilidade na definição de templates através do Overloading do método setTemplate:
setTemplate(byte[] template)
setTemplate(URL templateUrl)
setTemplate(File templateFile)
setTemplate(String templatePath)
setTemplate(InputStream templateInput)
Nova opção de definição de compressão do PDF através do método: 
setPdfFullCompression(false)
Por padrão, o atributo "pdfFullCompression" é true. Ao definir esse atributo com false, os boletos gerados estarão no modelo de documento PDF 1.4, ou seja, Acrobat Reader 5 ou superior. O "Full compression" foi introduzido no modelo de documento de PDF 1.5 (Acrobat Reader 6 ou superior) e como o termo indica, os arquivos gerados são menores em tamanho. Logo, ao utilizar o modelo de PDF 1.4, os arquivos não terão tamanhos otimizados, porém, poderão ser visualizados com qualquer programa similar ao Acrobat Reader 5 ou superior.
Novas formas de processamento em lote com retorno em byte ou file. Tanto pode-se processar boletos com template padrão ou informando o template personalizado. Alguns métodos:
byte[] groupInOnePDF(List&lt;Boleto&gt;);
byte[] groupInOnePdfWithTemplate(List&lt;Boleto&gt;, URL);
File groupInOnePdfWithTemplate(List&lt;Boleto&gt;, File, File);
List&lt;File&gt; onePerPDF(List&lt;Boleto&gt;, File);
List&lt;byte[]&gt; onePerPDFWithTemplate(List&lt;Boleto&gt;, InputStream);
Há também outras composições, como no caso de conjuntos de boletos com templates diferentes. Nesse tipo de utilização deseja-se processar várias combinações, onde cada lista de boleto está relacionada a um template diferente em  bytes: File groupInOnePdfWithTemplates(Collection&lt;Entry&lt;byte[], List&lt;Boleto&gt;&gt;&gt;, File);
&nbsp;Nova classe código de barras:

#org.jrimum.bopepo.pdf.CodigoDeBarras
String cod = "85690000012457000062011022520112300333888400";
Image img = CodigoDeBarras.valueOf(cod).toImage();Esta classe permite a geração da imagem do código de barras a partir do código numérico e não a partir de um título, como é atualmente em org.jrimum.bopepo.CodigoDeBarras. Lembrando que cada classe tem um propósito diferente: enquanto uma e usada para compor um código numérico, a outra é usada para compor imagens a partir desses códigos.
&nbsp;Nova classe / funcionalidade "PdfDocMix":

#org.jrimum.bopepo.pdf.PdfDocMix

Com essa nova classe é possível utilizar a mesma técnica da geração de boletos utilizando templates para outros tipos de documentos. Por exemplo: Fichas médicas, declarações para setor pessoal, pedidos de vendas, recibos, etc.
Assim, desde que se tenha um template já "desenhado", você poderá fazer algo como:
File fichaMedica = PdfDocMix.createWithTemplate("TemplateFichaMedica.pdf")
.put("TxtNomePaciente", "Fulano da silva")
.put("TxtDataDeNascimento", "21/04/1980")
.put("ImgFoto", new ImageIcon("foto3x4.png").getImage())
.toFile("FichaMedica.pdf");
Agradecimentos

Gostaríamos de agradecer a todas as colaborações no jrimum-community. E principalmente as mais relacionadas, threads:
Banco Real - Mudança do número do documento pelo nosso número
Banco Santander - Correção do uso da conta corrente e do dígito
Caixa Econômica Federal - SICOB - Nosso Número 16 posições
Colaboração Bancoob - @Cezar Augustus
Novo Código de Barras - org.jrimum.bopepo.pdf.CodigoDeBarras
Novo DocMix - org.jrimum.bopepo.pdf.PdfDocMix

DOWNLOAD

* JRimum-Bopepo-SNAPSHOT-20110415-bin.jar

* JRimum-Bopepo-SNAPSHOT-20110415-src.jar