2017-02-10 20 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 この文書では、最初のページの白いページが表示されます。ここで何が間違っているのか分かりません。私はPDFBox 2.0.3使用して同様のプログラムを実行すると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

(あなたのコードはは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 

I JAIでのJPEG2000形式のサポートは少し混乱していたと思います(SPIを含む追加のjarが必要ですが、それを保持するのは難しいです)。

さらに詳しい情報はPDFBox issue 1752にあり、JPedalが使用するデコーダを使用する可能性があります。あなたのJREで利用可能な(そして検出された)適切なJPEG2000 JAIコーデックがあれば、イメージが認識されると思います。私のPOMにこの依存関係を追加する

0

は(使用pdfbox 2.0.8)私を助け:

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