Pdfbox1.8.12将pdf转换为白页图像

时间:2017-02-10 21:43:18

标签: java pdf png pdfbox

我有一个代码将pdf文档的第一页转换为png格式图像。代码看起来与大多数pdf文件一样正常,除了这一个:https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0ahUKEwiqp4KovobSAhXJ54MKHdtbD54QFggeMAA&url=http%3A%2F%2Fitrevolution.com%2Fwp-content%2Fuploads%2Ffiles%2FPhoenixProjectExcerpt.pdf&usg=AFQjCNGYt1ALVc2ramVw_oM4Qb4rQCTDmw&cad=rja 本文档为我提供了第一页的白页。不知道这里有什么问题。

PDDocument pdf = PDDocument.loadNonSeq(file, new RandomAccessFile(tmp_file, "rw"));
List<PDPage> pdPages = pdf.getDocumentCatalog().getAllPages();
PDPage page = pdPages.get(0);
BufferedImage bim = page.convertToImage(BufferedImage.TYPE_INT_RGB, 300);
ImageIOUtil.writeImage(bim, thumbnailPath + "/" + objectId +  ".png", 300);

2 个答案:

答案 0 :(得分:1)

当我使用PDFBox 2.0.3运行类似程序时(您的代码看起来像1.8.x代码):

try (PDDocument pdf = PDDocument.load(file)) {
  PDFRenderer pdfRenderer = new PDFRenderer(pdf);
  BufferedImage bim = pdfRenderer.renderImageWithDPI(0, 300, ImageType.RGB);
  ImageIOUtil.writeImage(bim, outputFileName, 300);
}

我得到以下输出:

Feb 10, 2017 10:43:33 PM org.apache.pdfbox.contentstream.PDFStreamEngine operatorException
SEVERE: Cannot read JPEG2000 image: Java Advanced Imaging (JAI) Image I/O Tools are not installed

我相信JAI中的JPEG2000格式支持有点令人困惑(需要一个包含SPI的额外jar,但很难掌握)。

有关此问题的更多详细信息位于PDFBox issue 1752,可能会使用JPedal使用的解码器。我想在JRE中使用合适的JPEG2000 JAI编解码器(并检测到)可以识别图像。

答案 1 :(得分:0)

将此依赖项添加到我的POM帮助我(使用pdfbox 2.0.8):

<dependency>
    <groupId>com.github.jai-imageio</groupId>
    <artifactId>jai-imageio-jpeg2000</artifactId>
    <version>1.3.0</version>
</dependency>