Я пытаюсь преобразовать 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, то проблема больше не возникает.
Вотфайл примера: https://ufile.io/3or9l
pdfbox версия: 2.0.13