转换为PNG时,Apache PDFBox删除水平线

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了转换为PNG时,Apache PDFBox删除水平线相关的知识,希望对你有一定的参考价值。

我有一个PDF,当我将它渲染到png时,它会删除水平和垂直线。这是PDF以及它应该是什么样子:https://drive.google.com/file/d/1sAXwnaoZ-QJn1Kbpw85hhzV_X5zwgfkA/view?usp=sharing

这是使用PDFBox 2.0.13的PDF的PNG:enter image description here

为什么要删除这些行,如何让它们在PNG中呈现?

答案

问题(最有可能)是您没有安装JBIG2图像格式的Java ImageIO插件,因为缺少的行和标题实际上是JBIG2图像。

当我在没有这样的插件的情况下运行PDFBox PDF Debugger并在其中打开PDF时,它也不会显示缺少的部分;在它的类路径中添加了这样一个插件后,突然显示它们。

有关PDFBox依赖关系的更多详细信息,请阅读the PDFBox 2.0 Dependencies页面。特别是

JAI Image I/O

PDF支持嵌入式图像文件,但是对某些格式的支持需要第三方库,这些库是根据与Apache 2.0许可证不兼容的术语分发的:

这些库是可选的,如果存在于类路径中,将加载这些库,否则将禁用对这些图像格式的支持,并在遇到不支持的映像时记录警告。

可以在parent / pom.xml中找到这些组件的Maven依赖项。如果需要,可以更改组件的范围。请确保任何第三方许可证适合您的项目。

要包含JBIG2库,可以在项目pom.xml中包含以下部分:

<dependency>
    <groupId>org.apache.pdfbox</groupId>
    <artifactId>jbig2-imageio</artifactId>
    <version>3.0.0</version>
</dependency>

以上是关于转换为PNG时,Apache PDFBox删除水平线的主要内容,如果未能解决你的问题,请参考以下文章

用pdfbox或icepdf转换PDF为图片时,中文乱码问题

使用 PDFBox 将图像转换为 byte[]

PDFBox转图片问题汇总

JAVA使用pdfbox将pdf转换成图片

JAVA使用pdfbox将pdf转换成图片

pdfbox或icepdf转换PDF为图片时,中文乱码处理