【发布时间】:2013-02-16 03:11:31
【问题描述】:
我之前在stackoverflow 中问过类似的问题。我想问另一个相关的问题,所以我再次改写原来的问题。
我使用 PDFBox 从 pdf 中提取图像和文本,在 skydrive 和 scribd 中可用。我有以下用于提取文本的代码:
PDFTextStripper p = new PDFTextStripper();
String thistext=p.getText(document);
正确地提取了文本。但是,当我尝试使用 ExtractImages 类从同一个 pdf 中提取图像时,生成的图像都是 pdf 的所有页面,而不是实际的图像(应该是 1)。
在我看来,pdf 可以是扫描文档。答案是the fact that it is scanned is your issue。我再次尝试使用pdftotext 和pdfimages。文本被提取出来,但是pdfimages输出了5个图像文件,都是pdf的页面(同PDFBox)。
据我所知,光栅图像在 pdf 中存储为 Xobjects。当我用文本编辑器打开 pdf 时,我看到了以下 5 行:
<< /Type /XObject /Subtype /Image /Name /X /Width 2600 /Height 3799
这可能是PDFBox 和XPDF 将 5 页 pdf 输出为图像文件的原因。那么如何从pdf中提取文本?是否有技术文档提到为什么(或如何)可以从这样的文档中提取文本,其中页面“据说”嵌入为 XObjects。我可以在我的报告中引用文档。
【问题讨论】:
-
很遗憾,您的 PDF 参考确实需要某种登录方式。
-
@mki ,感谢您的调查。我在 Skydrive 上发布了 pdf,并向所有人开放。您还有其他推荐的文件托管服务吗?我可以使用它。
-
嗯,我刚用手机测试过,可以下载了。我是否只是在没有在常规浏览器中登录的情况下忽略了下载?好吧,我明天会调查的。
-
好的,我添加了一个 scribd 链接。看看能不能下载。
-
技术文档将是定义 PDF 的 ISO 标准,即 ISO 32000-1:2008,“很快”将更新为 ISO 32000-2...当您阅读它时,您会看到没有什么能阻止您先绘制文本,然后在其上方放置图像,甚至首先将图像放在那里,然后在其上方绘制不可见的文本。