使用Apache PDFBox从PDF获取文本

问题描述

我如何获得有关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网页中获取文本方面也存在问题。看起来像:

example of txt

我认为编码有问题,但是不知道该怎么做

解决方法

您的代码正常工作,您的文本查看器假定编码错误。

使用代码和与您获得正确的提取文本相同的PDFBox版本:

viewer screen shot,UTF-8 encoding assumed

但是当我强制查看器采用UTF-16编码时,我得到的东西与您得到的非常相似:

viewer screen shot,UTF-16 encoding assumed

文件本身未指明BOM或任何其他形式的任何特定编码:

viewer screen shot,hex dump view

因此,您的文本查看器或者错误地猜测 UTF-16编码,或者被配置来使用它。

因此,要么将文本查看器切换为使用UTF-8,要么明确告诉FileWriter使用UTF-16。


根据您的特定安装,文件编码实际上可能有所不同。但是,由于我的UTF-16视图非常像您的视图,因此编码很有可能至少类似于UTF-8,可能是某些ISO 8859-x ...