2016-07-14 17 views
2

をPNG形式から私はサフィックスをPNG形式いPDXObjectImageからBufferedImageを取得しようとしている:取得の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画像とnullです。

PNG接尾辞を持つPDXObjectImageからBufferedImageを取得する正しい方法は何ですか?

は、私も試してみました:

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

しかし、再び画像はnullです。

私はorg.apache.pdfboxバージョン1.8.11を使用しています。

+1

ログメッセージが表示されたら、たぶん、あなたはjbig2デコーダをインストールする必要があります。 Btw最新バージョンは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ありがとう。

関連する問題