25 de abril de 2011

Snapshot 2011/04/15 - Novidades

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)

 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<Boleto>);
byte[] groupInOnePdfWithTemplate(List<Boleto>, URL);
File groupInOnePdfWithTemplate(List<Boleto>, File, File);
List<File> onePerPDF(List<Boleto>, File);
List<byte[]> onePerPDFWithTemplate(List<Boleto>, 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<Entry<byte[], List<Boleto>>>, File);

 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.

 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:


DOWNLOAD

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

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

2 comentários:

  1. Legal, adorei esse PdfDocMix!

    ResponderExcluir
  2. É sempre bom estar colaborando com o projeto! Abração ae galera!

    ResponderExcluir