PDF文件表格数据处理

2/22/2017来源:ASP.NET技巧人气:1488

由于要处理PDF文件格式的表格数据,查了好多资料都是写普通PDF文件的操作,最后选定了划定区域获取文本的方式来处理数据

数据格式如下:

code如下:

//pdf模板处理
PRivate static void fillTemplete(){
   String templetePath = "E:\\testTable.pdf";
   String data = "";
   List<User> listUser = new ArrayList<>();
   try {
      PDDocument document = PDDocument.load(new File(templetePath));
      if(document.isEncrypted()){
         try{
            document.decrypt( "" );
         } catch (Exception e){
         }
      }
      PDFTextStripperByArea stripper = new PDFTextStripperByArea();
      stripper.setSortByPosition(true);
      //划定区域
      Rectangle rect= new Rectangle(0, 0, 700, 800);
      stripper.addRegion("area", rect);
      List<PDPage> allPages = document.getDocumentCatalog().getAllPages();
      int i = 0;
      for(PDPage page : allPages){
         stripper.extractRegions(page);
         i++;
         //获取区域的text
         data = stripper.getTextForRegion("area");
         data = data.trim();
         String[] datas = data.split("\r\n");
         //对文本进行分行处理         
         for( i = 0; i<datas.length; ++i){
	    String[] strUser = datas[i].split(" ");
            User user = new User();
            user.setName(strUser[0]);
            user.setId(strUser[1]);
            user.setGender(strUser[2]);
            user.setSchool(strUser[3]);
            user.setMajor(strUser[4]);
            user.setAaa(strUser[5]);
            user.setGg(strUser[6]);
            listUser.add(user);
         }
      }
      document.close();
      for(User user :listUser){
         System.out.println(user.toString());
      }
   } catch (Exception e){
      e.printStackTrace();
   }
}