Я надеюсь, что кто-то может помогать мне, стараюсь объединять несколько PDF в единственном файле, но только он загружает мне файлы в уже существующем файле. Я хотел бы, чтобы я был напечатан на новой веб-странице моего приложения. Я использовал эту линию кода
JasperExportManager.exportReportToPdfStream (jp1, outStream); для единственного файла.
как он мог бы делать, чтобы объединять несколько pdf? Много Agredecería Ваши комментарии....
Такой у меня есть мой код до сих пор
for (int i = 0; i < algo.length; i++) {
results.put("EVALUATION_NUMBER", Integer.parseInt(algo[i]));
LOG.info("All Generated PDF");
jr = JasperCompileManager.compileReport(report);
jasperPrint = JasperFillManager.fillReport(jr, results, con);
jasperPrintList.add(jasperPrint);
System.out.println(jasperPrintList.get(i));
List<JRPrintPage> pages = jasperPrintList.get(i).getPages();
JasperPrint jp1 = new JasperPrint();
for (int j = 0; j < pages.size(); j++) {
JRPrintPage object = pages.get(j);
jp1.addPage(object);
}
Докуда я знаю, одинокий Джаспер может производить PDFs с Ваших шаблонов, у него нет функциональности объединения PDFs. Чтобы объединять PDFs, ты можешь использовать одну librerГ, - в который я работал с PDFs iText . AquГ - пример cГіmo ты можешь перемешивать их с этой librerГ - в, приспособленный этот сайт :
public class ItextMerge {
public static void main(String[] args) {
List<InputStream> list = new ArrayList<InputStream>();
try {
// PDFs a unir
list.add(new FileInputStream(new File("C:/Temp/1.pdf")));
list.add(new FileInputStream(new File("C:/Temp/2.pdf")));
// PDF final
OutputStream out = new FileOutputStream(new File("C:/Temp/result.pdf"));
doMerge(list, out);
} catch (Exception e) {
e.printStackTrace(System.out);
}
}
/**
* Mezclar múltiples archivos PDF en uno
*
* @param list Lista de InputStream de los archivos PDF a unir
* @param outputStream Stream de archivo de salida del PDF
* que resulta de la unión de los streams de la lista de entrada
* @throws DocumentException
* @throws IOException
*/
public static void doMerge(List<InputStream> list, OutputStream outputStream)
throws DocumentException, IOException {
//crear un nuevo documento PDF
Document document = new Document();
//crear un escritor del PDF
PdfWriter writer = PdfWriter.getInstance(document, outputStream);
document.open();
PdfContentByte cb = writer.getDirectContent();
//para cada PDF en la lista
//leer su contenido por página e ir agregando
//cada página en el PDF de la variable document
for (InputStream in : list) {
PdfReader reader = new PdfReader(in);
for (int i = 1; i <= reader.getNumberOfPages(); i++) {
document.newPage();
//import the page from source pdf
PdfImportedPage page = writer.getImportedPage(reader, i);
//add the page to the destination pdf
cb.addTemplate(page, 0, 0);
}
}
//cerrar streams para liberar recursos
//y cualquier bloqueo de archivo
outputStream.flush();
document.close();
outputStream.close();
}
}