2017-02-10 2 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 Этот документ дает мне белую страницу для первой страницы. Не уверен, что здесь не так.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

При запуске аналогичной программы с использованием PDFBox 2.0.3 (ваш код выглядит 1.8.х код):

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 считают, что поддержка формата JPEG2000 в JAI была немного запутанной (для нее требуется дополнительная банка, содержащая SPI, но ее трудно получить).

Подробнее об этой проблеме содержится в PDFBox issue 1752, с потенциальным обходным путем с использованием декодера, который использует JPedal. Я полагаю, что с подходящим кодеком JPEG2000 JAI, доступным (и обнаруженным) в вашей JRE, изображение распознается.

0

Добавление этой зависимости в моей POM помог мне (используется pdfbox 2.0.8):

<dependency> 
    <groupId>com.github.jai-imageio</groupId> 
    <artifactId>jai-imageio-jpeg2000</artifactId> 
    <version>1.3.0</version> 
</dependency> 
Смежные вопросы