使用 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...
如何获取有关 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...