有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用itextpdf提取的java英语文本不可理解

我试图在控制台上从pdf中提取并打印英文文本。提取是使用PDFTextractor类通过itextpdf API完成的。我收到的文本不可理解。可能是我面临的一些语言问题。我的目的是在PDF中找到一个特定的文本,并用其他字符串替换它。我开始解析文件以查找字符串。以下代码段表示我的字符串提取器:

Document document = new Document();

PdfWriter writer = PdfWriter.getInstance(document,
    new FileOutputStream(OUTPUTFILE));
document.open();
PdfReader reader = new PdfReader(input);
int n = reader.getNumberOfPages();
PdfImportedPage page;
// Go through all pages
for (int i = 1; i <= n; i++) {

    String str=PdfTextExtractor.getTextFromPage(reader, i); 
    System.out.println(str);  

}
document.close();

但我在控制台上得到的输出是不可理解的,即使PDF中的文本是英文的

输出:

但dna不能确定你的年龄和年龄,也不能确定你的年龄和年龄 这是一个完整的系统。就目前而言,我认为这是一个很好的解决方案 这是一种非常简单的方法,它可以将rpap dna从新添加到新的文档中 托福。我是一个学生,我是一个学生 她说:“她是我的朋友。”

rtasp”

有谁能帮我找出什么可能的解决方案,让英文文本就像源PDF一样。我们将非常感谢您的任何帮助


共 (1) 个答案

  1. # 1 楼答案

    如果您想根据文本在页面上的位置对其进行排序,则需要引入一种特定的策略,例如LocationTextExtractionStrategy

    for (int i = 1; i <= reader.getNumberOfPages(); i++) {
        String str=PdfTextExtractor.getTextFromPage(reader, i, new LocationTextExtractionStrategy());
    }
    

    有时LocationTextExtractionStrategy会导致奇怪的句子,更具体地说,如果页面上的字母“跳舞”(同一行上的文本的字形基线不同)。在这种情况下,您可以尝试SimpleTextExtractionStrategy,它将按照文本在PDF语法内容流中出现的顺序返回文本