Обединяването на файлове в един pdf генерира различен изглед

Опитвам се да обединя в един файл с един или повече съхранени файлове PDF и файл JasperReports, използвайки iText.

Направих този метод.

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();
}

въведете описание на изображението тук

Гледах в гугъл, но не намерих отговор. И така, какво не е наред? Възможно ли е да генерирате тези страници в едни и същи полета?


person user3503888    schedule 01.10.2014    source източник
comment
И така, какво не е наред - обединявате документи с различни размери на страници и полета... какво очаквахте? Ако искате общ визуален стил, трябва да създадете всички изходни документи според този стил. PDF форматът не е добър формат за последваща промяна на стила.   -  person mkl    schedule 02.10.2014
comment
@mkl благодаря за отговора, знаете ли дали е възможно да го промените с помощта на Itext? Тъй като идеята ми е да извлека съдържанието на ireport байтове или pdf байтове и след това да се присъединя. Тъй като в един проект някой трябва да проектира всички страници и понякога някои страници от този документ са само текст и те няма да имат данни от база данни.   -  person user3503888    schedule 02.10.2014
comment
знаете ли дали е възможно да го промените с помощта на Itext? - Възможно е да направите всички страници с еднакъв размер, но като цяло е трудно да разпознаете полетата и да ги промените: Няма поле стойност в PDF, можете просто да проверите всяка изчертана буква, линия или каквото и да е и да опитате да направите извод за полетата от техните позиции; все пак има някои подводни камъни. По-добре ги създайте равни.   -  person mkl    schedule 02.10.2014
comment
@mkl Видях, че мога да получа маржове в Itext. Но си представях едно нещо, но не знам дали е лесно. Вземете текста на pdf и генерирайте нов. И така, ако беше ти, какво правиш?   -  person user3503888    schedule 02.10.2014
comment
Видях, че мога да получа полета в Itext - да, но има бележки по полета и други клопки, вж. този отговор; Вземете текста на pdf и генерирайте нов. - това е изключително трудно. Трябва не само да извлечете текст, но и цялата информация за стила; освен това трябва да тълкувате текстови части по отношение на техните напр. формиране на един ред или множество колони и т.н... добре, ако търсите препълване на стека за извличане на текст от таблици в PDF файлове, ще намерите много въпроси, но не и много отговори.   -  person mkl    schedule 02.10.2014
comment
Ако бяхте на мое място, какво правите?   -  person user3503888    schedule 02.10.2014
comment
Ако бяхте на мое място, какво правите? - Бих се опитал да накарам дизайнерите на отчетите и статичните PDF файлове да се придържат към един набор от размери на страници и полета. Ако това се окаже невъзможно и работата ми все още е да направя обединения отчет да изглежда добре, щях да направя около седмица анализ на входящите PDF файлове и още месеци разработване на решение за обединяване, работещо за анализираните документи и подобни .   -  person mkl    schedule 02.10.2014