答案 0 :(得分:3)
这是可能的,但从我所看到的情况来看,我怀疑你的PDF有一个特定的缩略图,只是在缩略图中呈现页面。
首先,让我们根据PDF规范创建一个包含缩略图的PDF,因为我找不到。 ISO-3200-2的第12.3.4节(PDF规范)规定如下:
页面的缩略图图像应为页面对象中 Thumb 条目指定的图像XObject ...
这可以使用iText轻松创建,如下所示:
PdfWriter writer = new PdfWriter(OUTPUT_FILE);
PdfDocument pdfDocument = new PdfDocument(writer);
Document document = new Document(pdfDocument);
document.add(new Paragraph("Hello world"));
PdfImageXObject thumbnail = new PdfImageXObject(ImageDataFactory.create(getInput("itext.png")));
pdfDocument.getFirstPage().getPdfObject().put(PdfName.Thumb, thumbnail.getPdfObject());
document.close();
getInput("itext.png")
解析为我们图片的完整路径:
这给了我们output.pdf
您会注意到Acrobat和Reader都没有显示缩略图 - 他们只是渲染页面。其他读者使用我们的新缩略图:
由于您正在使用阅读器,我认为这意味着PDF中的缩略图只是呈现的页面,因为缩略图似乎被忽略。
要回答您的问题,获取缩略图与上面的操作完全相反 - 我们获取Page的字典并查找 / Thumb 条目
PdfReader reader = new PdfReader(OUTPUT_FILE);
PdfDocument pdfDocument = new PdfDocument(reader);
PdfStream thumbnailStream = pdfDocument.getFirstPage().getPdfObject().getAsStream(PdfName.Thumb);
if (thumbnailStream != null) {
PdfImageXObject thumbnail = new PdfImageXObject(thumbnailStream);
BufferedImage image = thumbnail.getBufferedImage();
//Output to file, memory, etc
}