Java 使用itextpdf从3d pdf提取缩略图
当我使用Adobe Acrobat Reader查看3D pdf(又名pdf/E)时,它会在左侧显示一个缩略图:Java 使用itextpdf从3d pdf提取缩略图,java,pdf,itext,Java,Pdf,Itext,当我使用Adobe Acrobat Reader查看3D pdf(又名pdf/E)时,它会在左侧显示一个缩略图: 是否可以使用itext从pdf中提取此缩略图,或者是由查看者动态生成的?这是可能的,但从我看到的情况来看,我怀疑您的pdf是否有特定的缩略图图像,而只是在缩略图中呈现页面 首先,我们根据PDF规范创建一个具有缩略图的PDF,因为我找不到缩略图。ISO-3200-2(PDF规范)第12.3.4节规定如下: 页面的缩略图应为页面对象中的Thumb项指定的图像XObject 使用iTex
是否可以使用itext从pdf中提取此缩略图,或者是由查看者动态生成的?这是可能的,但从我看到的情况来看,我怀疑您的pdf是否有特定的缩略图图像,而只是在缩略图中呈现页面 首先,我们根据PDF规范创建一个具有缩略图的PDF,因为我找不到缩略图。ISO-3200-2(PDF规范)第12.3.4节规定如下: 页面的缩略图应为页面对象中的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”)
解析为图像的完整路径:
这给了我们
您将注意到,Acrobat和Reader都不显示缩略图,它们只是呈现页面。其他读者确实使用我们的新缩略图:
由于您使用的是reader,我认为这意味着PDF中的缩略图只是呈现的页面,因为缩略图似乎被忽略了
要回答您的问题,获取缩略图只需与上述操作相反-我们获取页面的字典并查找/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
}
这是可能的,虽然从我所看到的我怀疑你的PDF有一个特定的缩略图图像,只是在缩略图中呈现页面 首先,我们根据PDF规范创建一个具有缩略图的PDF,因为我找不到缩略图。ISO-3200-2(PDF规范)第12.3.4节规定如下: 页面的缩略图应为页面对象中的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”)
解析为图像的完整路径:
这给了我们
您将注意到,Acrobat和Reader都不显示缩略图,它们只是呈现页面。其他读者确实使用我们的新缩略图:
由于您使用的是reader,我认为这意味着PDF中的缩略图只是呈现的页面,因为缩略图似乎被忽略了
要回答您的问题,获取缩略图只需与上述操作相反-我们获取页面的字典并查找/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
}
谢谢你详尽的回答。你说得对:pdf不包含缩略图。我希望是这样,因为视图角度与pdf中预定义的角度不同(+放大时拇指看起来是像素化的)。事实证明,Acrobat DC在您第一次打开“拇指”选项卡时创建拇指。因此,如果您已经操纵了视图,它会改变拇指:)谢谢您详细的回答。你说得对:pdf不包含缩略图。我希望是这样,因为视图角度与pdf中预定义的角度不同(+放大时拇指看起来是像素化的)。事实证明,Acrobat DC在您第一次打开“拇指”选项卡时创建拇指。因此,如果您已经操纵了视图,它会更改拇指:)