2016-07-14 43 views
2

我想從PDXObjectImage一個BufferedImage已經同巴新的後綴:獲取的BufferedImage從png格式PDXObjectImage

PDResources pdResources = pdPage.getResources(); 
Map<String, PDXObject> xobjects = (Map<String, PDXObject>) pdResources.getXObjects(); 
if (xobjects != null) { 
    for (String key : xobjects.keySet()) { 
     PDXObject xobject = xobjects.get(key); 
     if (xobject instanceof PDXObjectImage) { 
      PDXObjectImage imageObject = (PDXObjectImage) xobject; 
      String suffix = imageObject.getSuffix(); 
      if (suffix != null) { 
       BufferedImage image = imageObject.getRGBImage(); 
      } 
     } 
    } 
} 

此代碼工作正常爲JPG PDXObjectImages但圖像是空與PNG圖像。

從具有PNG後綴的PDXObjectImage獲取BufferedImage的正確方法是什麼?

我也試過:

BufferedImage image = ImageIO.read(((PDPixelMap)imageObject).getPDStream().createInputStream()); 

但同樣圖像爲null。

我正在使用org.apache.pdfbox 1.8.11版。

+1

如果您收到任何日誌消息?也許你必須安裝jbig2解碼器。順便說一句,最新版本是2.0.2。 –

+0

@TilmanHausherr我沒有得到任何錯誤或警告,imageObject.getRGBImage()只是返回null。 –

+0

然後請分享PDF。 –

回答

1

最後轉移到PDFBox的2.0版,然後得到了一個清晰的警告,我沒有安裝jbig2解碼器,並解決了在maven中添加以下依賴項的問題。

<dependency> 
    <groupId>com.levigo.jbig2</groupId> 
    <artifactId>levigo-jbig2-imageio</artifactId> 
    <version>1.6.5</version> 
</dependency> 

@TilmanHausherr感謝。