單字:
導入 org.apache.lucene.document.Document;
導入 org.apache.lucene.document.Field;
導入 org.apache.poi.hwpf.extractor.WordExtractor;
導入java.io.File;
導入 java.io.InputStream;
導入 java.io.FileInputStream;
導入com.search.code.Index;
public Document getDocument(Index index, String url, String title, InputStream is) throws DocCenterException {
字串正文文字 = null;
嘗試 {
WordExtractor ex = new WordExtractor(is);//is是WORD檔案的InputStream
bodyText = ex.getText();
if(!bodyText.equals("")){
index.AddIndex(url, 標題, bodyText);
}
}catch (DocCenterException e) {
throw new DocCenterException("無法從 Mocriosoft Word 文件中提取內容", e);
}捕獲(異常e){
e.printStackTrace();
}
}
返回空值;
}
Excel:
導入 org.apache.lucene.document.Document;
導入 org.apache.lucene.document.Field;
導入 org.apache.poi.hwpf.extractor.WordExtractor;
導入 org.apache.poi.hssf.usermodel.HSSFWorkbook;
導入 org.apache.poi.hssf.usermodel.HSSFSheet;
導入 org.apache.poi.hssf.usermodel.HSSFRow;
導入 org.apache.poi.hssf.usermodel.HSSFCell;
導入java.io.File;
導入 java.io.InputStream;
導入 java.io.FileInputStream;
導入com.search.code.Index;
public Document getDocument(Index index, String url, String title, InputStream is) throws DocCenterException {
StringBuffer 內容 = new StringBuffer();
嘗試{
HSSFWorkbook workbook = new HSSFWorkbook(is);//建立Excel工作簿檔案的引用
for (int numSheets = 0; numSheets < workbook.getNumberOfSheets(); numSheets++) {
if (null != workbook.getSheetAt(numSheets)) {
HSSFSheet aSheet = workbook.getSheetAt(numSheets);//取得一張sheet
for (int rowNumOfSheet = 0; rowNumOfSheet <= aSheet.getLastRowNum(); rowNumOfSheet++) {
if (null != aSheet.getRow(rowNumOfSheet)) {
HSSFRow aRow = aSheet.getRow(rowNumOfSheet); //獲得一行
for (短 cellNumOfRow = 0; cellNumOfRow <= aRow.getLastCellNum(); cellNumOfRow++) {
if (null != aRow.getCell(cellNumOfRow)) {
HSSFCell aCell = aRow.getCell(cellNumOfRow);//取得列值
content.append(aCell.getStringCellValue());
}
}
}
}
}
}
if(!content.equals("")){
index.AddIndex(url, 標題, content.toString());
}
}catch (DocCenterException e) {
throw new DocCenterException("無法從 Mocriosoft Word 文件中提取內容", e);
}catch(異常e){
System.out.println("已運行xlRead() : " + e );
}
返回空值;
}
微軟幻燈片軟體:
導入 java.io.InputStream;
導入 org.apache.lucene.document.Document;
導入 org.apache.poi.hslf.HSLFSlideShow;
導入 org.apache.poi.hslf.model.TextRun;
導入 org.apache.poi.hslf.model.Slide;
導入 org.apache.poi.hslf.usermodel.SlideShow;
public Document getDocument(索引索引,字串url,字串標題,InputStream is)
拋出 DocCenterException {
StringBuffer 內容 = new StringBuffer("");
嘗試{
SlideShow ss = new SlideShow(new HSLFSlideShow(is));//is為檔案的InputStream,建立SlideShow
Slide[] Slides = ss.getSlides();//獲得每張幻燈片
for(int i=0;i<slides.length;i++){
TextRun[] t = Slides[i].getTextRuns();//為了取得幻燈片的文字內容,創建TextRun
for(int j=0;j<t.length;j++){
content.append(t[j].getText());//這裡貼上文字內容加到content去
}
content.append(slides[i].getTitle());
}
index.AddIndex(url, 標題, content.toString());
}catch(異常前){
System.out.println(例如.toString());
}
返回空值;
}
PDF:
導入 java.io.InputStream;
導入java.io.IOException;
導入 org.apache.lucene.document.Document;
導入 org.pdfbox.cos.COSDocument;
導入 org.pdfbox.pdfparser.PDFParser;
導入 org.pdfbox.pdmodel.PDDocument;
導入 org.pdfbox.pdmodel.PDDocumentInformation;
導入 org.pdfbox.util.PDFTextStripper;
導入com.search.code.Index;
public Document getDocument(索引索引,字串url,字串標題,InputStream is)拋出DocCenterException {
COSDocument cosDoc = null;
嘗試 {
cosDoc = parseDocument(is);
} catch (IOException e) {
關閉COSDocument(cosDoc);
throw new DocCenterException("無法處理該PDF文件", e);
}
if (cosDoc.isEncrypted()) {
if (cosDoc != null)
關閉COSDocument(cosDoc);
throw new DocCenterException("該PDF文檔是加密文檔,無法處理");
}
字串 docText = null;
嘗試 {
PDFTextStripper 剝離器 = new PDFTextStripper();
docText = stripper.getText(new PDDocument(cosDoc));
} catch (IOException e) {
關閉COSDocument(cosDoc);
throw new DocCenterException("無法處理該PDF文件", e);
}
PDDocument pdDoc = null;
嘗試 {
pdDoc = new PDDocument(cosDoc);
PDDocumentInformation docInfo = pdDoc.getDocumentInformation();
if(docInfo.getTitle()!=null && !docInfo.getTitle().equals("")){
標題 = docInfo.getTitle();
}
} catch (異常 e) {
關閉COSDocument(cosDoc);
關閉PDDocument(pdDoc);
System.err.println("無法取得該PDF文件的元資料" + e.getMessage());
} 最後 {
關閉COSDocument(cosDoc);
關閉PDDocument(pdDoc);
}
返回空值;
}
私有靜態 COSDocument parseDocument(InputStream is) 拋出 IOException {
PDFParser 解析器 = new PDFParser(is);
解析器.parse();
返回 parser.getDocument();
}
私有無效 closeCOSDocument(COSDocument cosDoc) {
if (cosDoc != null) {
嘗試 {
cosDoc.close();
} catch (IOException e) {
}
}
}
私有無效 closePDDocument(PDDocument pdDoc) {
if (pdDoc != null) {
嘗試 {
pdDoc.close();
} catch (IOException e) {
}
}
}
程式碼複製可能出錯,不過程式碼經過測試,絕對能用,POI為3.0-rc4,PDFBOX為0.7.3
興趣點:http://jakarta.apache.org/poi/index.html
PDFBOX:http://www.pdfbox.org/