gpt4 book ai didi

java - 使用pdfbox将pdf转换为png时文本周围的红色区域

转载 作者:行者123 更新时间:2023-11-30 10:07:26 25 4
gpt4 key购买 nike

我正在尝试使用 pdfbox 将 pdf 文件转换为 png 文件。不幸的是,结果我在输出的某些地方出现了奇怪的红色区域。我不确定是什么问题。只有部分 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());
}
}

到目前为止,我只发现当我在 linux 上的 Master PDF editor 中打开它们时,输出中红色的地方是空白的。尽管当我使用 Document Viewer 打开它们时,它们看起来很正常。

一些提示:- 扫描了有问题的 pdf。我可以选择工作部件周围的文本,但不能选择覆盖在它们上面的红色区域。也许这与 OCR 问题有关?- 如果我使用 linux 工具 convert not-working-pdf.pdf converted.pdf 然后尝试将此文件转换为 png,则问题不再存在。

png output after converting pdf

这是一个示例文件:https://ufile.io/3or9l

pdfbox版本:2.0.13

最佳答案

这是一个 PDFBox 错误,原因是带有 mask 的双色图像,这是不寻常的。光栅中只有一个颜色元素,因此仅应用“R”而不是所有 3 个 RGB 目标。因此,白色看起来像红色。

问题 PDFBOX-4470 中有关此错误的更多详细信息,它将在 2.0.14 版本中修复。在那之前,您可以使用 snapshot .

关于java - 使用pdfbox将pdf转换为png时文本周围的红色区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54294852/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com