我在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
时,这样做会给我一个例外吗?
当我获取reader.getPageContent(1)返回的字节数组的大小时,我得到一个1000+的值。令我困惑的是为什么我会得到例外。
例外 -
java.lang.IllegalArgumentException: image == null!
我也试过了itext,但没用。
您能否建议我从pdf文件的字节数组中获取第1页图像(第1页为图像)?
答案 0 :(得分:1)
据我所知,iText无法做到这一点(至少在不久前我搜索类似的问题时)。
但您可以使用PDFToImage中的Apache PDFBox:
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中同时可用。
答案 1 :(得分:1)
回答我自己的问题,以便其他人可以从中受益。 经过一番研究,我发现了它,并得到了解决方案。
看看这个link。
PDFDocumentReader document = new PDFDocumentReader(<byteArraOfThePDF>);
PageDetail pageDetail = new PageDetail("<docIDanything>", "", <pagenumber>, "");
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);