Объединять многообразные PDF's с jasperReports

Я надеюсь, что кто-то может помогать мне, стараюсь объединять несколько 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);

                    }
1
задан 02.06.2016, 02:32
1 ответ

Докуда я знаю, одинокий Джаспер может производить 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();
    }
}
1
ответ дан 24.11.2019, 14:15