1. 程式人生 > >PDF檔案表格資料處理

PDF檔案表格資料處理

由於要處理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();
   }
}