由于要处理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(); }}
新闻热点
疑难解答