Красные области вокруг текста при преобразовании pdf в png с pdfbox - PullRequest
0 голосов
/ 21 января 2019

Я пытаюсь преобразовать pdf в png файл, используя pdfbox.К сожалению, в результате я получаю странные красные области в некоторых местах вывода.Я не уверен, в чем проблема.Это проблема только с некоторыми файлами PDF.

Вот код, который я использую:

    public static BufferedImage generateFromPdf(String ref, InputStream stream, int pageIndex, PreviewMode mode) throws IOException {
        PDDocument doc = null;
        try (InputStream buffered = new BufferedInputStream(stream)) {
            doc = PDDocument.load(buffered, PDF_LOADING_MEMORY_SETTING);
            if (pageIndex > doc.getNumberOfPages()) {
                return null;
            }
            PDFRenderer renderer = new PDFRenderer(doc);
            return rasterizePdfBox(ref, pageIndex, renderer, mode);
        } finally {
            if (doc != null) {
                doc.close();
            }
        }
    }

, а затем:

    private static BufferedImage rasterizePdfBox(String ref, int pageIndex, PDFRenderer renderer, PreviewMode mode) throws IOException {
        Future<BufferedImage> result = executorService.submit(() -> {
            LOGGER.info(String.format("Generate preview for ref: %s, page: %s, mode: %s ", ref, pageIndex, mode.name()));
            return renderer.renderImageWithDPI(pageIndex - 1, mode.getDpi(), ImageType.RGB);
        });

        try {
            return result.get();
        } catch (InterruptedException | ExecutionException e) {
            LOGGER.error(String.format("Error when generating preview: %s", e.getMessage()));
            Thread.currentThread().interrupt();
            throw new IOException(e.getMessage());
        }
    }

ТакДо сих пор я только понял, что места, выделенные красным на выходе, пустые, когда я открываю их в Master PDF editor в Linux.Они кажутся нормальными, хотя, когда я открываю их с помощью Document Viewer.

Некоторые подсказки: - PDF-файлы с проблемами были отсканированы.Я могу выделить текст вокруг рабочих частей, но не в тех местах, где поверх них есть красное наложение.Может быть, это как-то связано с проблемами распознавания текста?- если я использую инструмент linux convert not-working-pdf.pdf converted.pdf и затем пытаюсь преобразовать этот файл в png, то проблема больше не возникает.

png output after converting pdf

Вотфайл примера: https://ufile.io/3or9l

pdfbox версия: 2.0.13

1 Ответ

0 голосов
/ 20 февраля 2019

Это ошибка PDFBox, причиной которой было битональное изображение с маской, что необычно. В растре есть только один цветовой элемент, поэтому вместо всех 3 пунктов назначения RGB применяется только «R». Из-за этого белый появился как красный.

Подробнее об этой ошибке в выпуске PDFBOX-4470 , она будет исправлена ​​в выпуске 2.0.14. До этого вы можете работать со снимком .

...