2017-02-10 311 views
1

我有一个代码将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 本文件给我一个白页的第一页。不知道这里有什么问题。Pdfbox1.8.12将PDF转换为白页图像

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

看到这里接受的答案:http://stackoverflow.com/questions/20424796/pdf-box-generating-blank -images-due-to-jbig2-images-in-it –

+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编解码器可以识别图像。

0

添加这种依赖关系到我的POM帮我(用PDFBOX 2.0.8):

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