我有一个PDF,当我将其渲染为png时,它会删除水平线和垂直线。这是PDF,其外观应为:https://drive.google.com/file/d/1sAXwnaoZ-QJn1Kbpw85hhzV_X5zwgfkA/view?usp=sharing

这是使用PDFBox 2.0.13的PDF的PNG:java - Apache PDFBox转换为PNG时会删除水平线-LMLPHP

为什么这些线会被删除,我如何才能将其显示在PNG中?

最佳答案

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

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

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


  JAI影像I / O
  
  PDF支持嵌入式图像文件,但是对某些格式的支持需要第三方库,这些库是根据与Apache 2.0许可证不兼容的条款分发的:
  
  
  读取JBIG2图像:JBIG2 ImageIO
  读取JPEG 2000(JPX)图像:JAI Image I/O Tools Core
  编写TIFF图像还需要JAI图像I / O工具核心。
  
  
  这些库是可选的,如果存在于类路径中,则将被加载,否则将禁用对这些图像格式的支持,并在遇到不支持的图像时记录警告。
  
  这些组件的Maven依赖关系可以在parent / pom.xml中找到。如果需要,请更改组件的范围。请确保任何第三方许可证都适合您的项目。
  
  要包含JBIG2库,可以在项目pom.xml中包含以下部分:

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

09-25 17:51