从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);