繁体   English   中英

IText无法使用Java阅读PDF中的空白

[英]IText Unable to read whitespace in PDF using Java

我试图通过IText读取PDF文件,程序成功读取pdf文件,但不能包含空格。

程序:

  public void parse(String filename) throws IOException {
        PdfReader reader = new PdfReader(filename);
        PdfReaderContentParser pdfReaderContentParser = new PdfReaderContentParser(reader);
      TextExtractionStrategy strategy = null;
      for (int i=1; i<= reader.getNumberOfPages(); i++) {
           String text = PdfTextExtractor.getTextFromPage(reader, i, new LocationTextExtractionStrategy());
          System.out.println(text);

        }
    }

这是需要从pdf获取的数据

这是需要从pdf获取的数据

当程序正在读取pdf时,输出为:

  DATE MODE PARTICULARS DEPOSITS WITHDRAWALS BALANCE
   01-04-2017 B/F 54,396.82

如果您在图像中看到Date是01-04-2017,MODE的空PARTICULARS值是B / F,DEPOSITS和WITHDRAWALS也是空值并且BALANCE是54,396.82我需要文本格式的相同数据

例如->

 DATE      MODE PARTICULARS DEPOSITS WITHDRAWALS BALANCE
 01-04-2017     B/F                              54,396.82

需要帮助,在此先感谢。

您正在从PDF中提取文本 ,结果是正确的,没有丢失空格,因为原始文本中没有空格。

但是(您之前想念它,所以我正在编辑),您正在使用LocationTextExtractionStrategy ,它是“可识别表的”。 这很好,但是最后getTextFromPage会丢弃该表感知信息。

因此,您可以创建自己的策略实现来扩展LocationTextExtractionStrategy ,并添加getTabulatedText()方法以在需要的位置插入空格来吐出文本。 getResultantText()灵感,看看它如何在每个单元格之间插入一个空格...在您的代码中,您将根据需要插入任意多个空格(或制表符)。 有关示例,请参见此答案

MyTextExtractionStrategy strategy = new MyTextExtractionStrategy();
for (int i=1; i<= reader.getNumberOfPages(); i++) {
    String rawText = PdfTextExtractor.getTextFromPage(reader, i, strategy);
    String tabulatedText = strategy.getTabulatedText();
    System.out.println(text);
}

(也许已经有一个“战略”实现了,但是我不知道)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM