java抽取word,ppt,excel,pdf文档中文字

news/2024/11/30 0:48:29/
/*** 解析pdf文档,输出每行的文字** @param filePath* @return* @throws IOException*/public static List<String> getPdfWords(String filePath) throws IOException {File file = new File(filePath);PDDocument document = null;document = PDDocument.load(file);int pageSize = document.getNumberOfPages();//System.out.println("pageSize : " + pageSize);// 一页一页读取List<String> contents = new ArrayList<>();for (int i = 0; i < pageSize; i++) {// 文本内容PDFTextStripper stripper = new PDFTextStripper();// 设置按顺序输出stripper.setSortByPosition(true);stripper.setStartPage(i + 1);stripper.setEndPage(i + 1);String text = stripper.getText(document);String[] split = text.split("\r\n");List<String> content = Arrays.asList(split);contents.addAll(content);contents.add("------------------------------我是分页行-------------------------------");}return contents;}/*** 抽取word中的文字,同时支持doc和docx格式** @param path* @return*/public static String getWord(String path) {String resullt = "";//首先判断文件中的是doc/docxtry {if (path.endsWith(".doc")) {InputStream is = new FileInputStream(new File(path));WordExtractor re = new WordExtractor(is);resullt = re.getText();re.close();} else if (path.endsWith(".docx")) {OPCPackage opcPackage = POIXMLDocument.openPackage(path);POIXMLTextExtractor extractor = new XWPFWordExtractor(opcPackage);resullt = extractor.getText();extractor.close();} else {System.out.println("此文件不是word文件");}} catch (Exception e) {e.printStackTrace();}return resullt;}/*** 抽取excel文件中的内容,支持xls和xlsx格式** @param filePath* @throws Exception*/public static String getExcelWords(String filePath) throws Exception {InputStream is = new FileInputStream(new File(filePath));Workbook hssfWorkbook = null;if (filePath.endsWith("xlsx")) {//Excel 2007hssfWorkbook = new XSSFWorkbook(is);} else if (filePath.endsWith("xls")) {//Excel 2003hssfWorkbook = new HSSFWorkbook(is);}int numberOfSheets = hssfWorkbook.getNumberOfSheets();List list = new ArrayList();for (int i = 0; i < numberOfSheets; i++) {Sheet sheet = hssfWorkbook.getSheetAt(i);Row row = null;for (int j = 0; j < sheet.getPhysicalNumberOfRows(); j++) { // 获取每行row = sheet.getRow(j);if (row != null) {for (int k = 0; k < sheet.getRow(0).getPhysicalNumberOfCells(); k++) { // 获取每个单元格Cell cell = row.getCell(k);if (cell == null) {list.add("");continue;}switch (cell.getCellType()) {case Cell.CELL_TYPE_STRING:list.add(cell.getRichStringCellValue().getString());break;case Cell.CELL_TYPE_NUMERIC:if (DateUtil.isCellDateFormatted(cell)) {list.add(cell.getDateCellValue());} else {list.add(cell.getNumericCellValue());}break;case Cell.CELL_TYPE_BOOLEAN:list.add(cell.getBooleanCellValue());break;case Cell.CELL_TYPE_FORMULA:list.add(cell.getCellFormula());break;default:list.add("");break;}}}}}return list.toString();}/*** 抽取ppt中文字* @param path* @return* @throws IOException*/public static String getPptWords(String path) throws IOException {List<String> textList = Lists.newArrayList();SlideShow ppt;InputStream is = new FileInputStream(new File(path));if (path.endsWith(".ppt")) {ppt = new HSLFSlideShow(is);} else if (path.endsWith(".pptx")) {ppt = new XMLSlideShow(is);} else {//LOGGER.debug("此文件{}不是word文件", path);return "此文件不是PPt文件" + path;}List<Slide> slides = ppt.getSlides();for (Slide slide : slides) {List<Shape> shapes = slide.getShapes();for (Shape sh : shapes) {//如果是一个文本框if (sh instanceof TextShape) {TextShape shape = (TextShape) sh;textList.add(shape.getText());}}}return textList.toString();}

 


http://www.ppmy.cn/news/559615.html

相关文章

(C语言)三子棋(井字棋)娱乐教程

司机镇楼&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 口号&#xff1a;好好学习&#xff0c;努力养家 备注&#xff1a;看了正式版看不懂可以转接娱乐版 注意&#xff1a;这是个对于初学者来说的大型工程&#xff0c;分成了三部分来写&#…

计算机械效率的三种方式,专题+三种四类简单机械的机械效率(共张ppt).ppt

文档介绍&#xff1a; 专题三三种四类简单机械的机械效率专题三三种四类简单机械的机械效率考向解读在安徽中考的考纲中,“理解机械效率的普遍意义”这一要求奠定了不同机械的机械效率在安徽中考中的考查方向。关于三种四类简单机械的机械效率,安徽中考每年必考,2009年和2013年…

计算机专业开题报告论证记录如何写,浙江大学软件学院研究生开题报告论证流程说明...

浙江大学软件学院研究生开题报告论证流程说明 (5页) 本资源提供全文预览&#xff0c;点击全文预览即可全文预览,如果喜欢文档就下载吧&#xff0c;查找使用更方便哦&#xff01; 17.90 积分 浙江大学软件学院研究生开题报告论证流程说明浙江大学软件学院研究生开题报告论证流程…

计算机应用基础第2单元,高教社山东版计算机应用基础第2单元.ppt

高教社山东版计算机应用基础第2单元课件详解 计算机应用基础 技能拓展 2.添加用户账户 对于已存在的用户账户&#xff0c;在更改账户窗口中&#xff0c;可以更改账户名、创建密码、选择账户类型以及删除账户等操作。 更改用户账户窗口 第2单元 计算机应用基础 技能拓展 3.使用3…

C语言 模除循环,C语言程序设计模三循环程序设计训练.ppt

C语言程序设计模三循环程序设计训练 知识点 goto语句语法格式&#xff1a; goto 语句标号&#xff1b; 语句标号是按标识符规定书写的符号&#xff0c;放在某一语句行的前面&#xff0c;标号后加冒号。 语句标号起标识语句的作用&#xff0c;与goto语句配合使用。执行goto语句后…

计算机组成原理在除法运算中 商符,计算机组成原理第03章.ppt

计算机组成原理第03章.ppt 定点数除法运算——阵列除法 阵列除法器(不恢复余数法) * 定点数除法运算——阵列除法 ①Ri≥0, C1(够减&#xff0c;补数相加有进位);商上1,q1;Ri12Ri-Y,作减法,p1&#xff1b;即pCq1。 ② Ri&#xff1c;0, C0(不够减&#xff0c;补数相加无进位);商…

技术人员近业务,会困死在一条船上吗?

U盘式生存&#xff0c;是著名自媒体人“罗胖”&#xff08;罗振宇&#xff09;提出的一个概念&#xff0c;他认为&#xff0c;未来中国人必须适应“U盘化生存”&#xff0c;概括起来16个字&#xff1a;“自带信息&#xff0c;不装系统&#xff0c;随时插拔&#xff0c;自由协作…

唯库拼课课程大合集更新111门

001 60天引爆你打学习力&#xff08;完结&#xff09; 002 阿何谈时间管理&#xff08;完结&#xff09; 003 普通人也能掌握的神奇记忆&#xff08;完结&#xff09; 004 阿何思维导图&#xff08;完结&#xff09; 005 阿何写作课&#xff08;完结&#xff09; 006 跟恶…