对于这些二进制文档,如果需要建立全文索引,必须首先将其转换为文本文件格式,也就是读取其中的文字内容。简单常见的方法就是使用各种开源API。
对于Office文档,可以考虑使用POI,下载地址:http://poi.apache.org/
这里使用的是3.14版本,解压文件所需的jar包(全部导入Java工程即可)为:
poi-3.14-20160307.jar
poi-examples-3.14-20160307.jar
poi-excelant-3.14-20160307.jar
poi-ooxml-3.14-20160307.jar
poi-ooxml-schemas-3.14-20160307.jar
poi-scratchpad-3.14-20160307.jar
基本的使用方法,以读取Word文档为例:
import java.io.File; import java.io.FileInputStream; import org.apache.poi.hwpf.extractor.WordExtractor; public class Exec { public static void main(String[] args) throws Exception { FileInputStream in = new FileInputStream(new File( "c:\\docs\\课件(必看)网盘下载课件资料的详细步骤.doc")); WordExtractor extrator = new WordExtractor(in); String text = extrator.getText(); System.out.println(text); } }
对于PDF文档,可以使用的包是:https://pdfbox.apache.org/,这里使用2.0.5版本
除了下载pdfbox-2.0.5.jar外,还需下载fontbox-2.0.5.jar,可能编译还需commons-logging-1.2.jar(该文件需要单独添加:commons-logging-1.2)
基本使用方法参考:
import java.io.FileInputStream; import java.io.StringWriter; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.text.PDFTextStripper; public class Exec { public static void main(String[] args) throws Exception { FileInputStream is = new FileInputStream( "c:\\pdfs\\chinachengruo_cn.pdf"); StringWriter writer = new StringWriter(); PDDocument pdfDocument = PDDocument.load(is); PDFTextStripper stripper = new PDFTextStripper(); stripper.writeText(pdfDocument, writer); String contents = writer.getBuffer().toString(); System.out.println(contents); } }