如何解决使用 Java 读取 PDF 文件中的表格
我需要在我的程序中将 PDF 表解析为对象,但是我在从 PDF 文件读取表时遇到问题,因为很少有列是空的,但其他列是满的,所以 here is the problem:
我正在使用 PDFBox Apache。所以有时城市名称(Miejscowość)是一个很长的进入街道(ulica)列。第二个问题是,当我尝试逐行阅读时,我得到了由空格分隔的友好结果,例如“21-421 Aleksandrów Stanin łukowski lubelskie”,因此理论上我可以按空格拆分此行并获得记录,但就像您看到的很少记录已填充所有列,但其他列很少。逐行阅读的另一个问题是,就像您在图片中看到的那样,有时记录在一个单元格中有几条记录,以“-”分隔,或者像街道号码(数字)列可以有 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));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。