微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Java 读取 PDF 文件中的表格

如何解决使用 Java 读取 PDF 文件中的表格

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

我正在使用 PDFBox Apache。所以有时城市名称(Miejscowość)是一个很长的进入街道(ulica)列。第二个问题是,当我尝试逐行阅读时,我得到了由空格分隔的友好结果,例如“21-421 Aleksandrów Stanin łukowski lubelskie”,因此理论上我可以按空格拆分此行并获得记录,但就像您看到的很少记录已填充所有列,但其他列很少。逐行阅读的另一个问题是,就像您在图片中看到的那样,有时记录在一个单元格中有几条记录,以“-”分隔,或者像街道号码(数字)列可以有 3 行。下面我逐行添加我的代码读取,我也尝试通过矩形读取值,但它可能无法解决我的问题:

  1. 逐行 (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]);
         }
    
  2. 通过使用 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 举报,一经查实,本站将立刻删除。