org.jrimum.bopepo.view.PdfViewerMultiProcessor Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of bpp-cobranca Show documentation
Show all versions of bpp-cobranca Show documentation
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 2011 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: 19/03/2011 - 21:56:10
*
* ================================================================================
*
* Direitos autorais 2011 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: 19/03/2011 - 21:56:10
*
*/
package org.jrimum.bopepo.view;
import java.io.File;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map.Entry;
import org.jrimum.bopepo.Boleto;
import org.jrimum.bopepo.pdf.Files;
import org.jrimum.bopepo.pdf.PDFs;
import org.jrimum.utilix.Exceptions;
/**
*
* Classe utilizada para preencher o PDF de boletos em lote.
*
*
* @author Gilmar P.S.L.
*
* @since 0.2
*
* @version 0.2
*/
class PdfViewerMultiProcessor {
/**
* Agrupa os boletos da lista em um único arquivo PDF.
*
*
* @param boletos
* Lista com os boletos a serem agrupados
* @param boletoViewer
* Visualizador contendo o template para geração
*
* @return Arquivo PDF em array de bytes gerado com os boletos da lista
*
* @since 0.2
*/
protected static byte[] groupInOnePDF(List boletos, BoletoViewer boletoViewer) {
byte[] file = null;
List boletosEmBytes = new ArrayList(boletos.size());
for (Boleto bop : boletos) {
boletosEmBytes.add(boletoViewer.setBoleto(bop).getPdfAsByteArray());
}
try {
file = PDFs.mergeFiles(boletosEmBytes);
boletosEmBytes.clear();
return file;
} catch (Exception e) {
return Exceptions.throwIllegalStateException("Erro durante geração do PDF! Causado por " + e.getLocalizedMessage(), e);
}
}
/**
* Agrupa os boletos da lista em um único arquivo PDF.
*
*
* @param boletos
* Lista com os boletos a serem agrupados
* @param boletoViewer
* Visualizador contendo o template para geração
* @param fileDest
* Arquivo o qual armazenará os boletos
* @return Arquivo PDF gerado com os boletos da lista
*
* @since 0.2
*/
protected static File groupInOnePDF(List boletos, BoletoViewer boletoViewer, File fileDest) {
try {
return Files.bytesToFile(fileDest, groupInOnePDF(boletos, boletoViewer));
} catch (Exception e) {
return Exceptions.throwIllegalStateException("Erro durante geração do PDF! Causado por " + e.getLocalizedMessage(), e);
}
}
/**
* 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
*/
protected static byte[] groupInOnePDF(Collection>> templatesAndBoletos) {
byte[] file = null;
List toMerge = new ArrayList(templatesAndBoletos.size());
BoletoViewer viewer = new BoletoViewer();
for(Entry> entry : templatesAndBoletos){
toMerge.add(groupInOnePDF(entry.getValue(), viewer.setTemplate(entry.getKey())));
}
file = PDFs.mergeFiles(toMerge);
toMerge.clear();
return file;
}
/**
* Gera um 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
*/
protected static List onePerPDF(List boletos, File destDir, String prefixo, String sufixo) {
final List arquivos = new ArrayList(boletos.size());
final BoletoViewer bv = new BoletoViewer();
int cont = 1;
for (Boleto bop : boletos) {
arquivos.add(bv.setBoleto(bop).getPdfAsFile(destDir.getAbsolutePath() + File.separator + prefixo + cont++ + sufixo + ".pdf"));
}
return arquivos;
}
/**
* Gera um arquivo PDF para cada boleto contido na lista utilizando o
* template padrão do Bopepo.
*
* @param boletos
* Lista com os boletos a serem agrupados
*
* @return Lista contendo os arquivos PDF gerados a partir da lista de
* boletos
*
* @since 0.2
*/
protected static List onePerPDF(List boletos) {
return onePerPDF(boletos, new BoletoViewer());
}
/**
* Gera um arquivo PDF para cada boleto contido na lista utilizando o Viewer
* informado.
*
* @param boletos
* Lista com os boletos a serem agrupados
* @param boletoViewer
* Viewer contendo as informações necessárias, incluindo template
*
* @return Lista contendo os arquivos PDF gerados a partir da lista de
* boletos
*
* @since 0.2
*/
protected static List onePerPDF(List boletos, BoletoViewer boletoViewer) {
final List arquivos = new ArrayList(boletos.size());
for (Boleto bop : boletos) {
arquivos.add(boletoViewer.setBoleto(bop).getPdfAsByteArray());
}
return arquivos;
}
/**
* Gera um arquivo PDF para cada template e boleto relacionado em cada
* Entry. Caso exista sequência na coleção, a mesma é mantida.
*
*
* @param templatesAndBoletos
* - Coleção de templates e boletos para geração de arquivo PDF
*
* @return Lista contendo os arquivos PDF gerados com cada template e seus
* boletos
*
* @since 0.2
*/
protected static List onePerPDF(Collection>> templatesAndBoletos) {
List boletos = new ArrayList(templatesAndBoletos.size());
BoletoViewer viewer = new BoletoViewer();
for(Entry> entry : templatesAndBoletos){
boletos.addAll(onePerPDF(entry.getValue(), viewer.setTemplate(entry.getKey())));
}
return boletos;
}
}