I´m trying to merge into one file with one or more PDF files stored files and a JasperReports file using iText.
I did this method.
Map<String, Object> parameters = new HashMap<String, Object>();
List<String> arquivos = new LinkedList<String>();
arquivos.add("/Formulario/teste.jrxml");
arquivos.add("/Formulario/teste.pdf");
try {
Document document = new Document(PageSize.A4);
document.setMargins(0F, 0F, 0F, 0F);
PdfCopy pdfCopy = new PdfCopy(document, new FileOutputStream("c:\\labels\\teste.pdf"));
pdfCopy.setMargins(0, 0, 0, 0);
document.open();
PdfReader pdfReader = null;
InputStream inputStream = null;
for (String arquivo : arquivos) {
inputStream = ReportService.class.getResourceAsStream(arquivo);
if (FilenameUtils.getExtension(arquivo).equals("jrxml")) {
JasperReport report = JasperCompileManager.compileReport(inputStream);
JasperPrint jasperPrint = JasperFillManager.fillReport(report, parameters, new JREmptyDataSource());
inputStream = new ByteArrayInputStream(JasperExportManager.exportReportToPdf(jasperPrint));
}
pdfReader = new PdfReader(inputStream);
for (int i = 1; i <= pdfReader.getNumberOfPages(); i++) {
pdfCopy.addPage(pdfCopy.getImportedPage(pdfReader, i));
}
pdfCopy.freeReader(pdfReader);
pdfReader.close();
}
document.close();
} catch (DocumentException | IOException | JRException e) {
e.printStackTrace();
}
I looked at google, but didn't found any answer. So whats wrong? It's possible to generate these pages in the same margins?