All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jrimum.bopepo.view.BoletoViewer Maven / Gradle / Ivy

Go to download

This is a fork and merge from JRimum ( http://www.jrimum.org ), - Bopepo: https://github.com/jrimum/bopepo - Texgit: https://github.com/jrimum/texgit - Valia: https://github.com/jrimum/vallia - Utilix: https://github.com/jrimum/utilix - Domkee: https://github.com/jrimum/domkee For Brazillian Boleto Payment Method. So much thanks for original authors: Gilmar P. S. L, Misael Barreto and Rômulo Augusto.

The newest version!
/* 
 * Copyright 2008 JRimum Project
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at http://www.apache.org/licenses/LICENSE-2.0
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 * 
 * Created at: 08/05/2008 - 00:10:01
 *
 * ================================================================================
 *
 * Direitos autorais 2008 JRimum Project
 *
 * Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode 
 * usar esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma 
 * cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que 
 * haja exigência legal ou acordo por escrito, a distribuição de software sob esta 
 * LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER TIPO, sejam 
 * expressas ou tácitas. Veja a LICENÇA para a redação específica a reger permissões 
 * e limitações sob esta LICENÇA.
 * 
 * Criado em: 08/05/2008 - 00:10:01
 * 
 */
package org.jrimum.bopepo.view;

import static org.apache.commons.lang3.StringUtils.EMPTY;
import static org.jrimum.utilix.Objects.isNotNull;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.InputStream;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

import org.apache.log4j.Logger;
import org.jrimum.bopepo.Boleto;
import org.jrimum.bopepo.pdf.Files;
import org.jrimum.utilix.Collections;
import org.jrimum.utilix.Exceptions;
import org.jrimum.utilix.Objects;
import org.jrimum.utilix.Strings;

/**
 * 

* Agrupa as formas de "visão" de um boleto. *

* *

* Exemplo de formas de visualização: *

    *
  • PDF
  • *
  • Stream
  • *
  • Array de Bytes
  • *
  • Outros
  • *
*

* * @author Gilmar P.S.L. * @author Misael Barreto * @author Rômulo Augusto * @author Samuel Valério * * @since 0.2 * * @version 0.2 */ public class BoletoViewer { /** * */ private static Logger log = Logger.getLogger(BoletoViewer.class); /** *

* Engine responsável pela visualização em formato PDF. *

*/ private PdfViewer pdfViewer; /** *

* Instancia o visualizador com o template padrão. *

* * @param boleto Boleto preenchido * * @throws IllegalArgumentException Caso o {@code boleto} seja nulo */ public BoletoViewer(Boleto boleto) { checkBoleto(boleto); this.pdfViewer = new PdfViewer(boleto); } /** *

* Instancia o visualizador com um template determinado. *

* * @param boleto Boleto preenchido * @param templatePath Template PDF o qual o boleto será gerado * * @throws IllegalArgumentException Caso o {@code boleto} ou * {@code template} seja nulo */ public BoletoViewer(Boleto boleto, String templatePath) { checkBoleto(boleto); checkTemplatePath(templatePath); this.pdfViewer = new PdfViewer(boleto); setTemplate(templatePath); } /** *

* Instancia o visualizador com um template determinado. *

* * @param boleto Boleto preenchido * @param templateFile Template PDF o qual o boleto será gerado * * @throws IllegalArgumentException Caso o {@code boleto} ou * {@code template} seja nulo */ public BoletoViewer(Boleto boleto, File templateFile) { checkBoleto(boleto); checkTemplateFile(templateFile); this.pdfViewer = new PdfViewer(boleto); setTemplate(templateFile); } /** *

* Instancia o visualizador com um template determinado. *

* * @param boleto Boleto preenchido * @param templateUrl Template PDF o qual o boleto será gerado * * @throws IllegalArgumentException Caso o {@code boleto} ou * {@code template} seja nulo */ public BoletoViewer(Boleto boleto, URL templateUrl) { checkBoleto(boleto); checkTemplateFile(templateUrl); this.pdfViewer = new PdfViewer(boleto); setTemplate(templateUrl); } /** *

* Instancia o visualizador com um template determinado. *

* * @param boleto Boleto preenchido * @param templateInput Template PDF o qual o boleto será gerado * * @throws IllegalArgumentException Caso o {@code boleto} ou * {@code template} seja nulo */ public BoletoViewer(Boleto boleto, InputStream templateInput) { checkBoleto(boleto); checkTemplateFile(templateInput); this.pdfViewer = new PdfViewer(boleto); setTemplate(templateInput); } /** *

* Instancia o visualizador com um template determinado. *

* * @param boleto Boleto preenchido * @param template Template PDF o qual o boleto será gerado * * @throws IllegalArgumentException Caso o {@code boleto} ou * {@code template} seja nulo */ public BoletoViewer(Boleto boleto, byte[] template) { checkBoleto(boleto); checkTemplateFile(template); this.pdfViewer = new PdfViewer(boleto); setTemplate(template); } /** * Para uso interno do componente */ protected BoletoViewer() { this.pdfViewer = new PdfViewer(); } /** * Para uso interno do componente */ protected BoletoViewer(PdfViewer pdfViewer) { this.pdfViewer = pdfViewer; } /** *

* Instancia o visualizador com o template padrão. Caso o boleto seja nulo, * nenhuma instância do viewer é criada. *

* * @param boleto Boleto preenchido * * @throws IllegalArgumentException Caso o {@code boleto} seja nulo */ public static BoletoViewer create(Boleto boleto) { checkBoleto(boleto); return new BoletoViewer(boleto); } /** *

* Agrupa os boletos da lista em um único arquivo PDF. Ex: Se a lista contém * 10 boletos, ao final será gerado um único arquivo PDF contendo os 10 * boletos, sendo 1 boleto em cada página. *

* * * @param boletos Lista com os boletos a serem agrupados * * @return Arquivo PDF em array de bytes gerado com os boletos da lista * * @since 0.2 */ public static byte[] groupInOnePDF(List boletos) { checkBoletosList(boletos); return PdfViewerMultiProcessor.groupInOnePDF(boletos, new BoletoViewer()); } /** *

* Agrupa os boletos da lista em um único arquivo PDF. Ex: Se a lista contém * 10 boletos, ao final será gerado um único arquivo PDF contendo os 10 * boletos, sendo 1 boleto em cada página. *

* * * @param boletos Lista com os boletos a serem agrupados * @param destPath Caminho para o arquivo que armazenará os boletos * * @return Arquivo PDF gerado com os boletos da lista * * @since 0.2 */ public static File groupInOnePDF(List boletos, String destPath) { checkBoletosList(boletos); checkDestPath(destPath); return PdfViewerMultiProcessor.groupInOnePDF(boletos, new BoletoViewer(), new File(destPath)); } /** *

* Agrupa os boletos da lista em um único arquivo PDF. Ex: Se a lista contém * 10 boletos, ao final será gerado um único arquivo PDF contendo os 10 * boletos, sendo 1 boleto em cada página. *

* * * @param boletos Lista com os boletos a serem agrupados * @param destFile Arquivo que armazenará os boletos * * @return Arquivo PDF gerado com os boletos da lista * * @since 0.2 */ public static File groupInOnePDF(List boletos, File destFile) { checkBoletosList(boletos); checkDestFile(destFile); return PdfViewerMultiProcessor.groupInOnePDF(boletos, new BoletoViewer(), destFile); } /** *

* Agrupa os boletos da lista em um único arquivo PDF. Ex: Se a lista contém * 10 boletos, ao final será gerado um único arquivo PDF contendo os 10 * boletos, sendo 1 boleto em cada página. *

* * * @param boletos Lista com os boletos a serem agrupados * @param templatePath Caminho para o arquivo com o template para geração * @return Arquivo PDF em array de bytes gerado com os boletos da lista * * @since 0.2 */ public static byte[] groupInOnePdfWithTemplate(List boletos, String templatePath) { checkBoletosList(boletos); checkTemplatePath(templatePath); return PdfViewerMultiProcessor.groupInOnePDF(boletos, new BoletoViewer().setTemplate(templatePath)); } /** *

* Agrupa os boletos da lista em um único arquivo PDF. Ex: Se a lista contém * 10 boletos, ao final será gerado um único arquivo PDF contendo os 10 * boletos, sendo 1 boleto em cada página. *

* * * @param boletos Lista com os boletos a serem agrupados * @param templateUrl Arquivo com o template para geração * @return Arquivo PDF em array de bytes gerado com os boletos da lista * * @since 0.2 */ public static byte[] groupInOnePdfWithTemplate(List boletos, URL templateUrl) { checkBoletosList(boletos); checkTemplateFile(templateUrl); return PdfViewerMultiProcessor.groupInOnePDF(boletos, new BoletoViewer().setTemplate(templateUrl)); } /** *

* Agrupa os boletos da lista em um único arquivo PDF. Ex: Se a lista contém * 10 boletos, ao final será gerado um único arquivo PDF contendo os 10 * boletos, sendo 1 boleto em cada página. *

* * * @param boletos Lista com os boletos a serem agrupados * @param templateFile Arquivo com o template para geração * @return Arquivo PDF em array de bytes gerado com os boletos da lista * * @since 0.2 */ public static byte[] groupInOnePdfWithTemplate(List boletos, File templateFile) { checkBoletosList(boletos); checkTemplateFile(templateFile); return PdfViewerMultiProcessor.groupInOnePDF(boletos, new BoletoViewer().setTemplate(templateFile)); } /** *

* Agrupa os boletos da lista em um único arquivo PDF. Ex: Se a lista contém * 10 boletos, ao final será gerado um único arquivo PDF contendo os 10 * boletos, sendo 1 boleto em cada página. *

* * * @param boletos Lista com os boletos a serem agrupados * @param templateInput Arquivo com o template para geração * @return Arquivo PDF em array de bytes gerado com os boletos da lista * * @since 0.2 */ public static byte[] groupInOnePdfWithTemplate(List boletos, InputStream templateInput) { checkBoletosList(boletos); checkTemplateFile(templateInput); return PdfViewerMultiProcessor.groupInOnePDF(boletos, new BoletoViewer().setTemplate(templateInput)); } /** *

* Agrupa os boletos da lista em um único arquivo PDF. Ex: Se a lista contém * 10 boletos, ao final será gerado um único arquivo PDF contendo os 10 * boletos, sendo 1 boleto em cada página. *

* * * @param boletos Lista com os boletos a serem agrupados * @param template Arquivo com o template para geração * @return Arquivo PDF em array de bytes gerado com os boletos da lista * * @since 0.2 */ public static byte[] groupInOnePdfWithTemplate(List boletos, byte[] template) { checkBoletosList(boletos); checkTemplateFile(template); return PdfViewerMultiProcessor.groupInOnePDF(boletos, new BoletoViewer().setTemplate(template)); } /** *

* Agrupa os boletos da lista em um único arquivo PDF. Ex: Se a lista contém * 10 boletos, ao final será gerado um único arquivo PDF contendo os 10 * boletos, sendo 1 boleto em cada página. *

* * * @param boletos Lista com os boletos a serem agrupados * @param destPath Caminho para o arquivo que armazenará os boletos * @param templatePath Caminho para o arquivo com o template para geração * @return Arquivo PDF gerado com os boletos da lista * * @since 0.2 */ public static File groupInOnePdfWithTemplate(List boletos, String destPath, String templatePath) { checkBoletosList(boletos); checkDestPath(destPath); checkTemplatePath(templatePath); return PdfViewerMultiProcessor.groupInOnePDF(boletos, new BoletoViewer().setTemplate(templatePath), new File(destPath)); } /** *

* Agrupa os boletos da lista em um único arquivo PDF. Ex: Se a lista contém * 10 boletos, ao final será gerado um único arquivo PDF contendo os 10 * boletos, sendo 1 boleto em cada página. *

* * * @param boletos Lista com os boletos a serem agrupados * @param destPath Caminho para o arquivo que armazenará os boletos * @param templateFile Arquivo com o template para geração * @return Arquivo PDF gerado com os boletos da lista * * @since 0.2 */ public static File groupInOnePdfWithTemplate(List boletos, String destPath, File templateFile) { checkBoletosList(boletos); checkDestPath(destPath); checkTemplateFile(templateFile); return PdfViewerMultiProcessor.groupInOnePDF(boletos, new BoletoViewer().setTemplate(templateFile), new File(destPath)); } /** *

* Agrupa os boletos da lista em um único arquivo PDF. Ex: Se a lista contém * 10 boletos, ao final será gerado um único arquivo PDF contendo os 10 * boletos, sendo 1 boleto em cada página. *

* * * @param boletos Lista com os boletos a serem agrupados * @param destFile Arquivo que armazenará os boletos * @param templatePath Caminho para o arquivo com o template para geração * @return Arquivo PDF gerado com os boletos da lista * * @since 0.2 */ public static File groupInOnePdfWithTemplate(List boletos, File destFile, String templatePath) { checkBoletosList(boletos); checkDestFile(destFile); checkTemplatePath(templatePath); return PdfViewerMultiProcessor.groupInOnePDF(boletos, new BoletoViewer() .setTemplate(templatePath), destFile); } /** *

* Agrupa os boletos da lista em um único arquivo PDF. Ex: Se a lista contém * 10 boletos, ao final será gerado um único arquivo PDF contendo os 10 * boletos, sendo 1 boleto em cada página. *

* * * @param boletos Lista com os boletos a serem agrupados * @param destFile Arquivo que armazenará os boletos * @param templateFile Arquivo com o template para geração * @return Arquivo PDF gerado com os boletos da lista * * @since 0.2 */ public static File groupInOnePdfWithTemplate(List boletos, File destFile, File templateFile) { checkBoletosList(boletos); checkDestFile(destFile); checkTemplateFile(templateFile); return PdfViewerMultiProcessor.groupInOnePDF(boletos, new BoletoViewer() .setTemplate(templateFile), destFile); } /** *

* Agrupa os boletos das listas com seus respectivos templates em um único * arquivo PDF. Caso exista sequência na coleção, a mesma é mantida. *

* * * @param templatesAndBoletos Coleção de templates e boletos a serem * agrupados * * @return Arquivo PDF em array de bytes gerado com os boletos fornecidos * * @since 0.2 */ public static byte[] groupInOnePdfWithTemplates(Collection>> templatesAndBoletos) { checkTemplateBoletosEntries(templatesAndBoletos); return PdfViewerMultiProcessor.groupInOnePDF(templatesAndBoletos); } /** *

* Agrupa os boletos das listas com seus respectivos templates em um único * arquivo PDF. Caso exista sequência na coleção, a mesma é mantida. *

* * * @param templatesAndBoletos Coleção de templates e boletos a serem * agrupados * * @param destFile Arquivo que armazenará os boletos * * @return Arquivo PDF em array de bytes gerado com os boletos fornecidos * * @since 0.2 */ public static File groupInOnePdfWithTemplates(Collection>> templatesAndBoletos, File destFile) { checkTemplateBoletosEntries(templatesAndBoletos); checkDestFile(destFile); try { return Files.bytesToFile(destFile, PdfViewerMultiProcessor.groupInOnePDF(templatesAndBoletos)); } catch (Exception e) { return Exceptions.throwIllegalStateException("Erro inesperado!", e); } } /** *

* Agrupa os boletos das listas com seus respectivos templates em um único * arquivo PDF. Caso exista sequência no Map, a mesma dependerá da chamada * ao método {@link java.util.Map#entrySet() entrySet} do mesmo. *

* * * @param templatesAndBoletos Mapa de templates e boletos a serem agrupados * * @return Arquivo PDF em array de bytes gerado com os boletos fornecidos * * @since 0.2 */ public static byte[] groupInOnePdfWithTemplates(Map> templatesAndBoletos) { checkTemplateBoletosEntries(templatesAndBoletos); return groupInOnePdfWithTemplates(templatesAndBoletos.entrySet()); } /** *

* Agrupa os boletos das listas com seus respectivos templates em um único * arquivo PDF. Caso exista sequência no Map, a mesma dependerá da chamada * ao método {@link java.util.Map#entrySet() entrySet} do mesmo. *

* * * @param templatesAndBoletos Mapa de templates e boletos a serem agrupados * * @param destFile Arquivo que armazenará os boletos * * @return Arquivo PDF em array de bytes gerado com os boletos fornecidos * * @since 0.2 */ public static File groupInOnePdfWithTemplates(Map> templatesAndBoletos, File destFile) { checkTemplateBoletosEntries(templatesAndBoletos); checkDestFile(destFile); return groupInOnePdfWithTemplates(templatesAndBoletos.entrySet(), destFile); } /** *

* Agrupa os boletos das listas com seus respectivos templates em um único * arquivo PDF. Caso exista sequência no Map, a mesma dependerá da chamada * ao método {@link java.util.Map#entrySet() entrySet} do mesmo. *

* @param boletos Lista com os boletos a serem gerados * * @return Arquivo PDF em array de bytes gerado com os boletos fornecidos * * @since 0.2 */ public static List onePerPDF(List boletos) { checkBoletosList(boletos); return PdfViewerMultiProcessor.onePerPDF(boletos); } /** *

* Gera o arquivo PDF para cada boleto contido na lista. O nome do arquivo * segue a forma: * * diretorio + (/ ou \\) + (indice do arquivo na lista + 1) + * ".pdf" *

* *

* Exemplo, uma lista com 3 boletos: {@code onePerPDF(boletos, file);} * * * Arquivos gerados: *

    *
  • 1.pdf
  • *
  • 2.pdf
  • *
  • 3.pdf
  • *
*

* * @param boletos Lista com os boletos a serem agrupados * @param destPath Diretório o qual os boletos serão criados * * @return Lista contendo os arquivos PDF gerados a partir da lista de * boletos * * @since 0.2 */ public static List onePerPDF(List boletos, String destPath) { checkBoletosList(boletos); checkDestPath(destPath); return onePerPDF(boletos, new File(destPath), EMPTY, EMPTY); } /** *

* Gera o arquivo PDF para cada boleto contido na lista. O nome do arquivo * segue a forma: * * diretorio + (/ ou \\) + (indice do arquivo na lista + 1) + * ".pdf" *

* *

* Exemplo, uma lista com 3 boletos: {@code onePerPDF(boletos, file);} * * * Arquivos gerados: *

    *
  • 1.pdf
  • *
  • 2.pdf
  • *
  • 3.pdf
  • *
*

* * @param boletos Lista com os boletos a serem agrupados * @param destDir Diretório o qual os boletos serão criados * * @return Lista contendo os arquivos PDF gerados a partir da lista de * boletos * * @since 0.2 */ public static List onePerPDF(List boletos, File destDir) { checkBoletosList(boletos); checkDestDir(destDir); return onePerPDF(boletos, destDir, EMPTY, EMPTY); } /** *

* Gera o arquivo PDF para cada boleto contido na lista. O nome do arquivo * segue a forma: * * diretorio + (/ ou \\) prefixo + (indice do arquivo na lista + 1) + * ".pdf" *

* *

* Exemplo, uma lista com 3 boletos: {@code onePerPDF(boletos, file, * "BoletoPrefixo");} * * Arquivos gerados: *

    *
  • BoletoPrefixo1.pdf
  • *
  • BoletoPrefixo2.pdf
  • *
  • BoletoPrefixo3.pdf
  • *
*

* * @param boletos Lista com os boletos a serem agrupados * @param destPath Diretório o qual os boletos serão criados * @param prefixo Prefixo do nome do arquivo * * @return Lista contendo os arquivos PDF gerados a partir da lista de * boletos * * @since 0.2 */ public static List onePerPDF(List boletos, String destPath, String prefixo) { checkBoletosList(boletos); checkDestPath(destPath); return onePerPDF(boletos, new File(destPath), prefixo, EMPTY); } /** *

* Gera o arquivo PDF para cada boleto contido na lista. O nome do arquivo * segue a forma: * * diretorio + (/ ou \\) prefixo + (indice do arquivo na lista + 1) + * ".pdf" *

* *

* Exemplo, uma lista com 3 boletos: {@code onePerPDF(boletos, file, * "BoletoPrefixo");} * * Arquivos gerados: *

    *
  • BoletoPrefixo1.pdf
  • *
  • BoletoPrefixo2.pdf
  • *
  • BoletoPrefixo3.pdf
  • *
*

* * @param boletos Lista com os boletos a serem agrupados * @param destDir Diretório o qual os boletos serão criados * @param prefixo Prefixo do nome do arquivo * * @return Lista contendo os arquivos PDF gerados a partir da lista de * boletos * * @since 0.2 */ public static List onePerPDF(List boletos, File destDir, String prefixo) { checkBoletosList(boletos); checkDestDir(destDir); return onePerPDF(boletos, destDir, prefixo, EMPTY); } /** *

* Gera o arquivo PDF para cada boleto contido na lista. O nome do arquivo * segue a forma: * * diretorio + (/ ou \\) prefixo + (indice do arquivo na lista + 1) + * sufixo + ".pdf" *

* *

* Exemplo, uma lista com 3 boletos: {@code onePerPDF(boletos, file, * "BoletoPrefixo", "exSufixo");} * * Arquivos gerados: *

    *
  • BoletoPrefixo1exSufixo.pdf
  • *
  • BoletoPrefixo2exSufixo.pdf
  • *
  • BoletoPrefixo3exSufixo.pdf
  • *
*

* * @param boletos Lista com os boletos a serem agrupados * @param destPath Diretório o qual os boletos serão criados * @param prefixo Prefixo do nome do arquivo * @param sufixo Sufixo do nome do arquivo * @return Lista contendo os arquivos PDF gerados a partir da lista de * boletos * * @since 0.2 */ public static List onePerPDF(List boletos, String destPath, String prefixo, String sufixo) { checkBoletosList(boletos); checkDestPath(destPath); return onePerPDF(boletos, new File(destPath), prefixo, sufixo); } /** *

* Gera o arquivo PDF para cada boleto contido na lista. O nome do arquivo * segue a forma: * * diretorio + (/ ou \\) prefixo + (indice do arquivo na lista + 1) + * sufixo + ".pdf" *

* *

* Exemplo, uma lista com 3 boletos: {@code onePerPDF(boletos, file, * "BoletoPrefixo", "exSufixo");} * * Arquivos gerados: *

    *
  • BoletoPrefixo1exSufixo.pdf
  • *
  • BoletoPrefixo2exSufixo.pdf
  • *
  • BoletoPrefixo3exSufixo.pdf
  • *
*

* * @param boletos Lista com os boletos a serem agrupados * @param destDir Diretório o qual os boletos serão criados * @param prefixo Prefixo do nome do arquivo * @param sufixo Sufixo do nome do arquivo * @return Lista contendo os arquivos PDF gerados a partir da lista de * boletos * * @since 0.2 */ public static List onePerPDF(List boletos, File destDir, String prefixo, String sufixo) { checkBoletosList(boletos); checkDestDir(destDir); List files = new ArrayList(boletos.size()); files.addAll(PdfViewerMultiProcessor.onePerPDF(boletos, destDir, prefixo, sufixo)); return files; } public static List onePerPDFWithTemplate(List boletos, String templatePath) { checkBoletosList(boletos); checkTemplatePath(templatePath); return PdfViewerMultiProcessor.onePerPDF(boletos, new BoletoViewer().setTemplate(templatePath)); } public static List onePerPDFWithTemplate(List boletos, URL templateUrl) { checkBoletosList(boletos); checkTemplateFile(templateUrl); return PdfViewerMultiProcessor.onePerPDF(boletos, new BoletoViewer().setTemplate(templateUrl)); } public static List onePerPDFWithTemplate(List boletos, File templateFile) { checkBoletosList(boletos); checkTemplateFile(templateFile); return PdfViewerMultiProcessor.onePerPDF(boletos, new BoletoViewer().setTemplate(templateFile)); } public static List onePerPDFWithTemplate(List boletos, InputStream templateInput) { checkBoletosList(boletos); checkTemplateFile(templateInput); return PdfViewerMultiProcessor.onePerPDF(boletos, new BoletoViewer().setTemplate(templateInput)); } public static List onePerPDFWithTemplate(List boletos, byte[] template) { checkBoletosList(boletos); checkTemplateFile(template); return PdfViewerMultiProcessor.onePerPDF(boletos, new BoletoViewer().setTemplate(template)); } /** *

* Agrupa os boletos das listas com seus respectivos templates em um único * arquivo PDF. Caso exista sequência na coleção, a mesma é mantida. *

* * * @param templatesAndBoletos Coleção de templates e boletos a serem * agrupados * * @return Arquivo PDF em array de bytes gerado com os boletos fornecidos * * @since 0.2 */ public static List onePerPdfWithTemplates(Collection>> templatesAndBoletos) { checkTemplateBoletosEntries(templatesAndBoletos); return PdfViewerMultiProcessor.onePerPDF(templatesAndBoletos); } /** * Indica se o PDF do boleto gerado deve ser comprimido completamente ou * não, o padrão é true. * *

* "Full compression" foi introduzido no modelo de documento de PDF 1.5, o * que quer dizer que os boletos gerados por padrão pelo Bopepo estão nesse * modelo a menos que se utilize este método informando o contrário: {@code * #setPdfFullCompression(false)}. *

*

* Um PDF que seja "fully compressed", só pode ser lido por um visualizador * PDF como Acrobat Reader 6 ou superior. Entretanto, se o documento não for * comprimido [ {@code #setPdfFullCompression(false)} ], o boleto pdf gerado * no modelo de documento PDF 1.4 poderá ser lido por um visualizador tal * qual Acrobat Reader 5 ou superior. *

* * @param option Escolha de compressão * * @return Esta instância após a operação * * @since 0.2 */ public BoletoViewer setPdfFullCompression(boolean option) { pdfViewer.setFullCompression(option); return this; } /** * Define o título do documento PDF gerado. * * @param titulo para ser exibido como título do documento PDF * @return Esta instância após a operação * * @since 0.2 */ public BoletoViewer setPdfTitulo(String titulo) { pdfViewer.setTitle(titulo); return this; } /** * Define se o título do documento PDF gerado será mostrado ou não (padrão * true). * * @param opcao para exibir título do documento PDF (true) * @return Esta instância após a operação * * @since 0.2 */ public BoletoViewer setPdfExibirTitulo(boolean opcao) { pdfViewer.setDisplayTitle(opcao); return this; } /** * Define o autor do documento PDF gerado. * * @param autor do documento PDF * @return Esta instância após a operação * * @since 0.2 */ public BoletoViewer setPdfAutor(String autor) { pdfViewer.setAuthor(autor); return this; } /** * Define o assunto do documento PDF gerado. * * @param assunto do documento PDF * @return Esta instância após a operação * * @since 0.2 */ public BoletoViewer setPdfAssunto(String assunto) { pdfViewer.setSubject(assunto); return this; } /** * Define as palavras chave do documento PDF gerado. * * @param palavrasChave do documento PDF * @return Esta instância após a operação * * @since 0.2 */ public BoletoViewer setPdfPalavrasChave(String palavrasChave) { pdfViewer.setKeywords(palavrasChave); return this; } /** * Define se o os campos do documento PDF gerado devem ser removidos ou não * (padrão true). * * @param opcao para remover campos do documento PDF (true) * @return Esta instância após a operação * * @since 0.2 */ public BoletoViewer setPdfRemoverCampos(boolean opcao) { pdfViewer.setRemoveFields(opcao); return this; } /** * Define o template que será utilizado para construir o boleto. * * @param template * * @return Esta instância após a operação * * @throws IllegalArgumentException Caso o {@code template} seja nulo * * @since 0.2 */ public BoletoViewer setTemplate(byte[] template) { checkTemplateFile(template); this.pdfViewer.setTemplate(template); return this; } /** * Define o template que será utilizado para construir o boleto. * * @param templateUrl * * @since 0.2 * * @return Esta instância após a operação * * @throws IllegalArgumentException Caso o {@code template} seja nulo */ public BoletoViewer setTemplate(URL templateUrl) { checkTemplateFile(templateUrl); this.pdfViewer.setTemplate(templateUrl); return this; } /** * Define o template que será utilizado para construir o boleto. * * @param templateInput * * @since 0.2 * * @return Esta instância após a operação * * @throws IllegalArgumentException Caso o {@code template} seja nulo */ public BoletoViewer setTemplate(InputStream templateInput) { checkTemplateFile(templateInput); this.pdfViewer.setTemplate(templateInput); return this; } /** * Define o template que será utilizado para construir o boleto. * * @param templatePath * * @since 0.2 * * @return Esta instância após a operação * * @throws IllegalArgumentException Caso o {@code template} seja nulo */ public BoletoViewer setTemplate(String templatePath) { checkTemplatePath(templatePath); this.pdfViewer.setTemplate(templatePath); return this; } /** * Define o template que será utilizado para construir o boleto. * * @param templateFile * * @since 0.2 * * @return Esta instância após a operação * * @throws IllegalArgumentException Caso o {@code template} seja nulo */ public BoletoViewer setTemplate(File templateFile) { checkTemplateFile(templateFile); this.pdfViewer.setTemplate(templateFile); return this; } /** *

* Atribui um boleto para uso no visualizador. {@code Null} não é permitido. *

* * @param boleto Boleto a ser visualizado * * @since 0.2 * * @return Esta instância após a operação */ public BoletoViewer setBoleto(Boleto boleto) { checkBoleto(boleto); updateViewerPDF(boleto); return this; } /** *

* Caso algum template tenha sido utilizado, este método define que após sua * execução o boleto será consturído com o template padrão. *

* * @since 0.2 * * @return Esta instância após a operação */ public BoletoViewer removeTemplate() { final String DEFAULT = null; if (isNotNull(pdfViewer)) { pdfViewer.setTemplate(DEFAULT); } return this; } /** *

* Retorna o aquivo template utilizado pelo visualizador, que pode ser o * template padrão ou outro. *

* * @return Arquivo template * * @since 0.2 */ public byte[] getTemplate() { return pdfViewer.getTemplate(); } /** *

* Retorna o boleto usado pelo visualizador *

* * @return o boleto * * @since 0.2 */ public Boleto getBoleto() { return pdfViewer.getBoleto(); } /** *

* Retorna o boleto em um arquivo pdf. *

* * @param destPath Caminho onde será criado o arquivo pdf * @return Boleo em File * * @since 0.2 */ public File getPdfAsFile(String destPath) { if (log.isDebugEnabled()) { log.debug("documento instance : " + pdfViewer); } return pdfViewer.getFile(destPath); } /** *

* Retorna o boleto em um arquivo pdf. *

* * @param destFile Caminho onde será criado o arquivo pdf * @return Boleto em File * * @since 0.2 */ public File getPdfAsFile(File destFile) { if (log.isDebugEnabled()) { log.debug("documento instance : " + pdfViewer); } return pdfViewer.getFile(destFile); } /** *

* Retorna o boleto em uma stream de bytes. *

* * @return Boleto em ByteArrayOutputStream * * @since 0.2 */ public ByteArrayOutputStream getPdfAsStream() { if (log.isDebugEnabled()) { log.debug("documento instance : " + pdfViewer); } return pdfViewer.getStream(); } /** *

* Retorna o boleto em um array de bytes. *

* * @return Boleto em byte[] * * @since 0.2 */ public byte[] getPdfAsByteArray() { if (log.isDebugEnabled()) { log.debug("documento instance : " + pdfViewer); } return pdfViewer.getBytes(); } /** *

* Atualiza o objeto BoletoViewer mantendo as "invariantes". *

* * @param boleto * * @since 0.2 */ private void updateViewerPDF(Boleto boleto) { if (isNotNull(this.pdfViewer)) { this.pdfViewer.setBoleto(boleto); } else { this.pdfViewer = new PdfViewer(boleto); } } private static void checkDestPath(String path) { checkString(path, "Caminho destinado a geração do(s) arquivo(s) não contém informação!"); } private static void checkTemplatePath(String path) { checkString(path, "Caminho do template não contém informação!"); } private static void checkTemplateFile(Object template) { Objects.checkNotNull(template, "Arquivo de template nulo!"); } private static void checkString(String str, String msg) { Objects.checkNotNull(str); Strings.checkNotBlank(str, msg); } private static void checkDestDir(File file) { Objects.checkNotNull(file, "Diretório destinado a geração do(s) boleto(s) nulo!"); Objects.checkArgument(file.isDirectory(), "Isto não é um diretório válido!"); } private static void checkDestFile(File file) { Objects.checkNotNull(file, "Arquivo destinado a geração do(s) boleto(s) nulo!"); } private static void checkBoleto(Boleto boleto) { Objects.checkNotNull(boleto, "Boleto nulo!"); } private static void checkBoletosList(List boletos) { Objects.checkNotNull(boletos, "Lista de boletos nula!"); Collections.checkNotEmpty(boletos, "A Lista de boletos está vazia!"); } private static void checkTemplateBoletosEntries(Collection>> templatesAndBoletos) { Collections.checkNotEmpty(templatesAndBoletos, "A Coleção de pares: (template,boletos) está vazia!"); } private static void checkTemplateBoletosEntries(Map> templatesAndBoletos) { Collections.checkNotEmpty(templatesAndBoletos, "O Mapa (template,boletos) está vazio!"); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy