Pessoal;
Eu tenho a seguinte situação: tenho vários arquivos jasper, com meus relatórios. Capa, índice, essas coisas. Todas foram criadas a partir de um modelo, que tem as margens e tal. Eu queria saber como devo colocar todos os arquivos jasper juntos. Uso um subreport? tem como fazer um merge dos arquivos jasper?
Tu pode usar essa classe aqui:
import org.apache.commons.io.IOUtils;
import org.apache.commons.io.output.ByteArrayOutputStream;
import com.lowagie.text.pdf.PdfCopyFields;
import com.lowagie.text.pdf.PdfReader;
public class PDFUtils {
/**
* Juntar dois ou mais arquivos PDF em um arquivo unico;
* @param pdfs - PDFs que seram concatenados;
* @return byte[] - PDF unico com todos os PDFs passados por parâmetro;
*/
public synchronized static byte[] mergePDF(byte[]... pdfs){
try {
ByteArrayOutputStream os = new ByteArrayOutputStream();
PdfCopyFields copy = new PdfCopyFields(os);
for (byte[] pdf : pdfs) {
copy.addDocument(new PdfReader(pdf));
}
copy.close();
os.flush();
byte[] pdf = os.toByteArray();
IOUtils.closeQuietly(os);
return pdf;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
A chamada ficaria assim:
byte[] pdf = PDFUtils.mergePDF(pdf1,pdf2);