使用 Apache PDFBox 从 PDF 获取文本

Getting text from PDF using Apache PDFBox

如何获取有关 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 网页中的文本获取文本时遇到问题。看起来像:

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

您的代码工作正常,您的文本查看器采用了错误的编码。

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

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

文件本身不表示 BOM 或任何特定编码:

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

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


根据您的具体安装,文件编码实际上可能不同。由于我的 UTF-16 视图看起来非常像你的,因此编码很可能至少类似于 UTF-8,可能是一些 ISO 8859-x...