1

我正在获取 pdf 文件byte array。我只想将 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文件的字节数组中获取第一页的图像(第一页作为图像)吗?

4

2 回答 2

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 中可能提供了这样的包装器。

于 2012-06-02T14:43:40.683 回答
1

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

看看这个链接

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);
于 2012-06-02T16:02:00.480 回答