【发布时间】:2017-03-24 17:35:50
【问题描述】:
提取图像时出现 PDFBox 问题。 嗨,我如何检查 pdf 页面是否为图像并通过 PDFBOX 库提取该图像,有一种获取图像的方法,但如果 PDF 页面是图像,则无法获取。有人可以帮我解决这个问题。
关于提取图像的 Xpdf 问题。 我尝试通过另一个库 xpdf 提取图像,如果它是图像,它会在页面上进行奇怪的翻转。如果 pdf 包含一个小图像作为对象图像它给我确定,如果页面被扫描他我们做翻转。
我想从 PDF 中提取所有图像,如果扫描 PAGE 以将它们作为图像,如果 Page 包含纯文本和图像也从该页面获取图像。
我的意思是从 PDF 中提取所有图像。不仅形成一个页面,而且即使页面是一个图像,也可以将它们提取为图像,但不要跳过它们我认为 PDFbox 的表现如何。
XPDF 正在做一些事情,但是当他导出扫描的页面时页面上出现问题 FLIP(top,right)
我该如何解决这个问题谢谢。
Download File example for to test
`PDDocument document = PDDocument.load(new File("/home/dru/IdeaProjects2/PDFExtractor/test/t1.pdf"));
PDPageTree list = document.getPages();
for (PDPage page : list) {
PDResources pdResources = page.getResources();
System.out.println(pdResources.getResourceCache());
for (COSName c : pdResources.getXObjectNames()) {
PDXObject o = pdResources.getXObject(c);
if (o instanceof org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject) {
File file = new File("/home/dru/IdeaProjects2/PDFExtractor/test/out/" + System.nanoTime() + ".png");
ImageIO.write(((org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject)o).getImage(), "png", file);
}
}
}`
【问题讨论】:
-
您的问题不清楚。即使没有扫描,PDF 也可以包含图像。翻转可能是因为用户将纸张以错误的方向插入进纸器。
-
PDF 文件的 PAGE 是 IMAGE,例如您是否扫描纸张,扫描仪给您选择将图像保存为 PDF 文件 ok。我如何检测是否使用 PDFBOX 扫描了 PDF,因为如果我尝试通过 PDFbox 从页面获取图像,它正在寻找一些具有图像类型的对象,但他没有检测到 PDF 页面是否为完整图像。
-
那么您真正要问的是图像是否具有页面大小?但即使这样也不能确定图像是否被扫描。
-
请分享一个示例 PDF 来说明问题以及无法提取图像的关键代码。
-
我已经添加了使用pdfbox进行测试和代码的文件