PDF Flatenning с использованием PDFBOX - PullRequest
0 голосов
/ 11 января 2019

Я использую pdfbox для раскрашивания pdf, но после вызова acroForm.flatten() изображения не отображаются в полученном PDF.

Я перепробовал все предложения, доступные в интернете, удалил поля, удалил виджет, ни один из них не работает

List<InputStream> docs = new ArrayList<>();
for (String id : imageIdentifiers) {
    Optional<Map> o = images.stream()
        .filter(i ->id.equalsIgnoreCase((String) i.get("IMAGE_TYPE")))
        .findFirst();
    if (o.isPresent()) {
        try {
            PDDocument document = PDDocument.load(new File(template));
            PDAcroForm form = document.getDocumentCatalog().getAcroForm();                       
            List<PDField> fields = form.getFields();                         
            List<PDField> txtFields = fields.stream()
                .filter(textField)
                .collect(Collectors.toList());                           
            for (PDField field : txtFields) {                                
                String value = getValue(values, field.getPartialName(), secondPassFields);                               
                field.setValue(value);                               
                field.setReadOnly(true);
            }
            PDField imageField = fields.stream()
                .filter(imgField)
                .findFirst()
                .get();
            fillImage(document, imageField, (String) o.get().get("IMAGE_URL"));                          


            //document.getDocumentCatalog().getAcroForm().
            setNeedAppearances(false);
            //document.getDocumentCatalog().getAcroForm().flatten();

            document.getDocumentCatalog().getAcroForm().setFields(Collections.<PDField>emptyList());
            ByteArrayOutputStream outputStream = new ByteArrayOutputStream();                
            document.save(outputStream);                         
            document.close();
            InputStream in = new ByteArrayInputStream(outputStream.toByteArray());
            docs.add(in);
        } catch (Exception e) {
            throw e;
        }
    }
}

Я хочу, чтобы PDF был не редактируемым, независимо от того, сглажен он или нет

...