用java读取pdf文件中的表

o2g1uqev  于 2021-07-12  发布在  Java
关注(0)|答案(0)|浏览(317)

在我的程序中,我需要将pdf表解析为对象,但从pdf文件读取表时遇到问题,因为很少有列是空的,但其他列是满的,所以问题是:

我用的是pdfbox apache。所以有时城市名(miejscowość) 是一个长长的进入街道(ulica)的纵队。第二个问题是,当我试图逐行阅读时,我得到了一个友好的结果,用空格隔开,比如“21-421 aleksandr”ów斯坦宁łukowski-lubelskie“,所以理论上我可以用空格分割这一行,得到记录,但是就像你看到的,很少有记录所有的列都被填满了,而其他的只有很少。逐行读取的另一个问题是,正如您在图片中看到的,有时记录在一个单元格中有几个记录以“-”分隔,或者类似的街道号码(numery)列可以有3行。下面我添加了逐行读取的代码,并尝试通过矩形读取值,但这可能无法解决我的问题:
逐行(pdftextstripper)

for (int i = START_PAGE; i <= numberOfPages; i++) {
     stripper.setStartPage(i);
     stripper.setEndPage(i);
     String page = stripper.getText(document);
     String[] lines = page.split(stripper.getLineSeparator());
     int rowToStart = i == START_PAGE ? ROW_TO_START_ON_START_PAGE : ROW_TO_START_ON_NEXT_PAGE;
     for (int j = rowToStart; j < lines.length - 1; j++) {
         log.info(lines[j]);
     }

通过使用pdftextstripperbyarea

Rectangle postCodesColumn = new Rectangle(0, 40, 55, 780);

 stripper.addRegion("postCodes", postCodesColumn);
 stripper.addRegion("city", cityColumn);
 stripper.addRegion("street", streetColumn);
 stripper.addRegion("streetNumber",streetNumberColumn);
 stripper.addRegion("borough",boroughColumn);
 stripper.addRegion("county",countyColumn);
 stripper.addRegion("voivodeship",voivodeshipColumn);
 stripper.extractRegions(document.getPage(i));

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题