[英]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时,输出为:
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.