2016-07-14 3 views
2

Я пытаюсь получить BufferedImage от PDXObjectImage что Png суффикса:Get BufferedImage из 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 изображений.

Каков правильный способ получить BufferedImage из PDXObjectImage с суффикс PNG?

Я также попытался:

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

Но опять-таки изображение является недействительным.

Я использую версию org.apache.pdfbox 1.8.11.

+1

Если у вас есть сообщения в журнале? Возможно, вам нужно установить декодер jbig2. Btw последняя версия 2.0.2. –

+0

@TilmanHausherr У меня нет ошибок или предупреждений, imageObject.getRGBImage() просто возвращает null. –

+0

Тогда, пожалуйста, поделитесь PDF. –

ответ

1

Наконец, перешел в версию 2.0 PDFBox, после чего получил четкое предупреждение о том, что я не установил декодер jbig2 и решил проблему, добавив следующую зависимость в maven.

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

@TilmanHausherr благодарит.

 Смежные вопросы

  • Нет связанных вопросов^_^