1

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

例子.txt

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

4

1 回答 1

1

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

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

查看器屏幕截图,假定为 UTF-8 编码

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

查看器屏幕截图,假定为 UTF-16 编码

该文件本身并不表示 BOM 或任何内容的任何特定编码:

查看器屏幕截图,十六进制转储视图

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

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


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

于 2020-09-18T11:26:25.670 回答