PDF檔案表格資料處理
阿新 • • 發佈:2019-01-10
由於要處理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(); } }