【发布时间】:2021-01-05 00:36:10
【问题描述】:
我如何获得有关 pdf 结构的信息,我是指文本还是图片?我需要我的程序在其他文件夹中移动没有文本的 pdf,但现在我得到的只是一个空的 txt 文件。
try (FileWriter writer = new FileWriter(outputFile)) {
PDDocument document = new PDDocument().load(file);
PDFTextStripper pdfTextStripper = new PDFTextStripper();
String text = pdfTextStripper.getText(document);
writer.write(text);
document.close();
} catch (IOException e){
e.printStackTrace();
}
另外,从保存在 pdf 网页中获取文本时遇到问题。它看起来像:
我认为编码有问题,但不知道该怎么办
【问题讨论】:
-
"pdf 的结构,我的意思是文本或图片" - 你到底是什么意思?仅仅是文字与图像的比例之类的东西吗?哪种图像,矢量图形或位图?... “我认为编码有问题,但不知道该怎么办” - 通常这样的意思是 pdf 没有包含文本提取所需的数据。您是否测试过从 Adobe Reader 复制和粘贴是否会返回更好的结果?
-
"pdf 的结构,我的意思是文本或图片" - 我的意思是,pdf 只能包含没有文本的图片,例如保存在 pdf 中的扫描文档。 “您是否测试过从 Adobe Reader 复制和粘贴是否会返回更好的结果?” - 在默认的 ubuntu 文档查看器中测试,没问题
-
如果由于上述文本提取结果您(几乎)什么也没有,您可以查找图像。请参阅
PrintImageLocationsPDFBox 示例作为正确图像信息检索的示例。 ... “在默认的 ubuntu 文档查看器中测试,没问题” - 在这种情况下,我们需要一个示例 PDF 来检查。 -
我刚刚从开发头切换到 2.0.21,但从您的示例 PDF 中提取文本仍然没有问题。啊,我只是可以重现像你这样的图像:输出文本是 UTF-8 编码的,但是通过强制我的文本查看器采用 UTF-16 编码,输出看起来和你的一样。因此,要么将您的文本查看器切换到 UTF-8,要么明确告诉您的
FileWriter使用 UTF-16。 -
@mkl,非常感谢,刚刚尝试使用 LibreOffice Writer 打开文档,没关系,我认为是因为特定的字体。再次感谢您!