2017-02-10 1 views
1

J'ai un code pour convertir la première page du document pdf en image au format png. Le code semble fonctionner correctement avec la plupart des fichiers PDF, sauf celui-ci: 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 Ce document me donne une page blanche pour la première page. Je ne sais pas ce qui ne va pas ici.Pdfbox1.8.12 convertir le pdf en blanc page image

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

Voir accepté réponse ici: http://stackoverflow.com/questions/20424796/pdf-box-generating-blank -images-dues-à-jbig2-images-in-it –

+0

Ce qui m'intéresse vraiment: pourquoi n'avez-vous pas vu le message du journal? –

Répondre

1

Quand je lance un programme similaire en utilisant PDFBox 2.0.3 (votre code ressemble à code 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); 
} 

Je reçois la sortie suivante:

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 croyez que le support du format JPEG2000 dans JAI était un peu déroutant (nécessite un pot supplémentaire contenant le SPI, mais il est difficile de s'en procurer).

Plus de détails sur le problème sont dans PDFBox issue 1752, avec une solution de contournement potentielle utilisant le décodeur que JPedal utilise. J'imagine qu'avec un codec JAI JPEG2000 approprié disponible (et détecté) dans votre JRE, l'image est reconnue.

0

L'ajout de cette dépendance à mon POM m'a aidé (utilisé PDFBox 2.0.8):

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