从pdf的字节数组中获取pdf的第一页作为图像

我在byte array得到一个pdf。 我想将pdf的第一页转换为image

我已经厌倦了com.lowagie.text.pdf提供的课程,如下所示 –

 PdfReader reader = new PdfReader(input); reader.selectPages("1"); File file = new File("D:/img1.jpg"); BufferedImage pdfImage = ImageIO.read(new ByteArrayInputStream(reader.getPageContent(1))); ImageIO.write(pdfImage, "jpg", file); 

当调用ImageIO.write时,这样做会给我一个exception? 当我获取reader.getPageContent(1)返回的字节数组的大小时,我得到一个1000+的值。 令我困惑的是为什么我会得到例外。

例外 –

 java.lang.IllegalArgumentException: image == null! 

我也试过了itext,但没用。

您能否建议我从pdf文件的字节数组中获取第1页(第1页为图像)的图像?

据我所知,使用iText是不可能的(至少在不久前我搜索了类似的问题)。

但您可以使用Apache PDFBox中的PDFToImage :

 String [] args = new String[7]; args[0] = "-startPage"; args[1] = "1"; args[2] = "-endPage"; args[3] = "1"; args[4] = "-outputPrefix"; args[5] = "MyJpgFile"; args[6] = "MyPdfFile"; PDFToImage.main(args); 

为此编写包装器很容易。 也许这样的包装器在PDFBox中同时可用。

回答我自己的问题,以便其他人可以从中受益。 经过一些研究,我找到了它并得到了解决方案。

看看这个链接 。

 PDFDocumentReader document = new PDFDocumentReader(); PageDetail pageDetail = new PageDetail("", "", , ""); ResourceDetail det = document.getPageAsImage(pageDetail); BufferedImage image = ImageIO.read(new ByteArrayInputStream(det.getBytes())); File file = new File("d:/img2.jpg"); ImageIO.write(image, "jpg", file);