提取Office以及PDF里的文字
2015-11-17 11:23
387 查看
利用pdfbox提取pdf文档里的文字
利用POI提取office文档里的文字
例子比较简单,作为记录
提取pdf文字,可以提取中文,有时会出现乱码
提取office文档文字,不支持WPS
工程源码:
http://download.csdn.net/detail/zlp1992/9275815
利用POI提取office文档里的文字
例子比较简单,作为记录
提取pdf文字,可以提取中文,有时会出现乱码
import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import org.apache.pdfbox.pdfparser.PDFParser; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.util.PDFTextStripper; import com.doc.manager.util.IDocParser; /** * parse pdf documents * */ public class PdfParser implements IDocParser { @Override public String parser(String filePath){ if(filePath==null) return null; File file=new File(filePath); if(!file.exists()){ return null; } return parser(file); } @Override public String parser(File file){ FileInputStream fileInputStream=null; try { fileInputStream = new FileInputStream(file); } catch (FileNotFoundException e1) { e1.printStackTrace(); return null; } PDFParser parser; String reString=null; try { parser = new PDFParser(fileInputStream); parser.parse(); PDDocument pdDocument=parser.getPDDocument(); PDFTextStripper pdfTextStripper=new PDFTextStripper(); reString=pdfTextStripper.getText(pdDocument); } catch (IOException e) { e.printStackTrace(); } return reString.trim(); } }
提取office文档文字,不支持WPS
import java.io.File; import java.io.FileInputStream; import java.io.IOException; import org.apache.poi.hslf.extractor.PowerPointExtractor; import org.apache.poi.hslf.usermodel.HSLFSlideShowImpl; import org.apache.poi.hssf.extractor.ExcelExtractor; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hwpf.HWPFDocument; import org.apache.poi.hwpf.extractor.WordExtractor; import org.apache.poi.openxml4j.exceptions.OpenXML4JException; import org.apache.poi.poifs.filesystem.POIFSFileSystem; import org.apache.poi.xslf.XSLFSlideShow; import org.apache.poi.xslf.extractor.XSLFPowerPointExtractor; import org.apache.poi.xssf.extractor.XSSFExcelExtractor; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.apache.poi.xwpf.extractor.XWPFWordExtractor; import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.apache.xmlbeans.XmlException; import com.doc.manager.util.IDocParser; /** * parse office, not for wps_office * */ public class OfficeParser implements IDocParser { private final String WORD_2003_AND_BEFORE="doc"; private final String WORD_2007_AND_LATER="docx"; private final String EXCEL_2003_AND_BEFORE="xls"; private final String EXCEL_2007_AND_LATER="xlsx"; private final String PPT_2003_AND_BEFORE="ppt"; private final String PPT_2007_AND_LATER="pptx"; @Override public String parser(String filePath) { if(filePath==null) return null; File file=new File(filePath); if(!file.exists()) return null; return parser(file); } @Override public String parser(File file) { String filePath=file.getAbsolutePath(); String fileExt=filePath.substring(filePath.lastIndexOf(".")+1); if(fileExt.equalsIgnoreCase(WORD_2003_AND_BEFORE)) return parseWord2003AndBefore(file); if(fileExt.equalsIgnoreCase(WORD_2007_AND_LATER)) return parseWord2007AndLater(file); if(fileExt.equalsIgnoreCase(EXCEL_2003_AND_BEFORE)) return parseExcel2003AndBefore(file); if(fileExt.equalsIgnoreCase(EXCEL_2007_AND_LATER)) return parseExcel2007AndLater(file); if(fileExt.equalsIgnoreCase(PPT_2003_AND_BEFORE)) return parsePPT2003AndBefore(file); if(fileExt.equalsIgnoreCase(PPT_2007_AND_LATER)) return parsePPT2007AndLater(file); else{ System.out.println("不支持的文件类型"); } return null; } /** * 解析word2003及之前版本 * */ public String parseWord2003AndBefore(File file){ String text=null; WordExtractor extractor=null; try { HWPFDocument document=new HWPFDocument(new FileInputStream(file)); extractor=new WordExtractor(document); text=extractor.getText(); } catch (IOException e) { e.printStackTrace(); }finally{ if(extractor!=null) try { extractor.close(); } catch (IOException e) { e.printStackTrace(); } } return text.trim(); } /** * 解析word2007及以后版本 * */ public String parseWord2007AndLater(File file){ String text=null; try { XWPFDocument document=new XWPFDocument(new FileInputStream(file)); XWPFWordExtractor extractor=new XWPFWordExtractor(document); text=extractor.getText(); extractor.close(); } catch (IOException e) { e.printStackTrace(); } return text.trim(); } /** * 解析excel2003及之前版本 * */ public String parseExcel2003AndBefore(File file){ String text=null; try { FileInputStream inp = new FileInputStream(file); HSSFWorkbook wb = new HSSFWorkbook(new POIFSFileSystem(inp)); ExcelExtractor extractor = new ExcelExtractor(wb); extractor.setFormulasNotResults(true); extractor.setIncludeSheetNames(false); text = extractor.getText(); extractor.close(); inp.close(); } catch (IOException e) { e.printStackTrace(); } return text.trim(); } /** * 解析excel2007及以后版本 * */ public String parseExcel2007AndLater(File file){ String text=null; try { FileInputStream inp = new FileInputStream(file); XSSFWorkbook wb = new XSSFWorkbook(inp); XSSFExcelExtractor extractor=new XSSFExcelExtractor(wb); extractor.setFormulasNotResults(true); extractor.setIncludeSheetNames(false); text = extractor.getText(); extractor.close(); inp.close(); } catch (IOException e) { e.printStackTrace(); } return text.trim(); } /** * 解析powerpoint2003及之前版本 * */ public String parsePPT2003AndBefore(File file){ String text=null; try { FileInputStream inp = new FileInputStream(file); HSLFSlideShowImpl ppt=new HSLFSlideShowImpl(inp); PowerPointExtractor extractor=new PowerPointExtractor(ppt); text=extractor.getText(); extractor.close(); inp.close(); } catch (IOException e) { e.printStackTrace(); } return text.trim(); } /** * 解析powerpoint2007及以后版本 * */ public String parsePPT2007AndLater(File file){ String text=null; try { FileInputStream inp = new FileInputStream(file); XSLFSlideShow slideshow=new XSLFSlideShow(file.getAbsolutePath()); XSLFPowerPointExtractor extractor=new XSLFPowerPointExtractor(slideshow); text=extractor.getText(); extractor.close(); inp.close(); } catch (IOException e) { e.printStackTrace(); } catch (OpenXML4JException e) { e.printStackTrace(); } catch (XmlException e) { e.printStackTrace(); } return text.trim(); } }
工程源码:
http://download.csdn.net/detail/zlp1992/9275815
相关文章推荐
- Apache PDFBox 2.0.0 RC1 发布下载
- 使用pdfbox实现pdf文本提取和合并功能示例
- Java 使用poi把数据库中数据导入Excel的解决方法
- java使用pdfbox操作pdf文件示例
- java使用POI读取properties文件并写到Excel的方法
- java使用poi读取ppt文件和poi读取excel、word示例
- Java中使用Apache POI读取word文件简单示例
- java生成word文档【一】
- java生成word文档【二】
- 使用POI修改Excel后进行保存
- Java 实现导出excel表
- java POI实现excle 强制换行
- poi解析office文档
- poi 一个单元格不同字体
- java实现excel的导入导出(poi详解)
- POI操作Excel常用方法总结
- pdf转化jpg插件架包对比
- POI3.10.FINAL的word插入图片bug