`

POI pdf ppt word excel

阅读更多

JAVA读取WORD,EXCEL,POWERPOINT,PDF文件的方法

关键字: word, excel, powerpoint, pdf, pdfbox

OFFICE文档使用POI控件,PDF可以使用PDFBOX0.7.3控件,完全支持中文,用XPDF也行,不过感觉PDFBOX比较好,而且作者也在更新。水平有限,万望各位指正
 
WORD:
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.poi.hwpf.extractor.WordExtractor;

import java.io.File;
import java.io.InputStream;
import java.io.FileInputStream;

import com.search.code.Index;

public Document getDocument(Index index, String url, String title, InputStream is) throws DocCenterException {

  String bodyText = null;
  try {
   WordExtractor ex = new WordExtractor(is);//is是WORD文件的InputStream 
   bodyText = ex.getText();
   if(!bodyText.equals("")){
    index.AddIndex(url, title, bodyText);
   }
  }catch (DocCenterException e) {
   throw new DocCenterException("无法从该Mocriosoft Word文档中提取内容", e);
  }catch(Exception e){
   e.printStackTrace();
  }
}
  return null;
 }

  

Excel:

import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;

import org.apache.poi.hwpf.extractor.WordExtractor;
import  org.apache.poi.hssf.usermodel.HSSFWorkbook; 
import  org.apache.poi.hssf.usermodel.HSSFSheet; 
import  org.apache.poi.hssf.usermodel.HSSFRow; 
import  org.apache.poi.hssf.usermodel.HSSFCell; 

import java.io.File;
import java.io.InputStream;
import java.io.FileInputStream;

import com.search.code.Index;

 

public Document getDocument(Index index, String url, String title, InputStream is) throws DocCenterException {
  StringBuffer content = new StringBuffer();
  try{
   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 (short 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, title, content.toString());
   }
  }catch (DocCenterException e) {

   throw new DocCenterException("无法从该Mocriosoft Word文档中提取内容", e);
  }catch(Exception  e)  { 
   System.out.println("已运行xlRead()  :  "  +  e  ); 
  }
  return null;
 }

 

 

PowerPoint:

import java.io.InputStream;

import org.apache.lucene.document.Document;
import org.apache.poi.hslf.HSLFSlideShow;
import org.apache.poi.hslf.model.TextRun;
import org.apache.poi.hslf.model.Slide;
import org.apache.poi.hslf.usermodel.SlideShow;

 public Document getDocument(Index index, String url, String title, InputStream is)
 throws DocCenterException {
  StringBuffer content = new StringBuffer("");
  try{
   SlideShow ss = new SlideShow(new HSLFSlideShow(is));//is 为文件的InputStream,建立SlideShow
   Slide[] slides = ss.getSlides();//获得每一张幻灯片
   for(int i=0;i     TextRun[] t = slides[i].getTextRuns();//为了取得幻灯片的文字内容,建立TextRun
    for(int j=0;j      content.append(t[j].getText());//这里会将文字内容加到content中去
    }
    content.append(slides[i].getTitle());
   }
   index.AddIndex(url, title, content.toString());
  }catch(Exception ex){
   System.out.println(ex.toString());
  }
  return null;
 }

 

 PDF:

import java.io.InputStream;
import java.io.IOException;
import org.apache.lucene.document.Document;

import org.pdfbox.cos.COSDocument;
import org.pdfbox.pdfparser.PDFParser;
import org.pdfbox.pdmodel.PDDocument;
import org.pdfbox.pdmodel.PDDocumentInformation;
import org.pdfbox.util.PDFTextStripper;

import com.search.code.Index;

 

 public Document getDocument(Index index, String url, String title, InputStream is)throws DocCenterException {
  
  COSDocument cosDoc = null;
  try {
   cosDoc = parseDocument(is);
  } catch (IOException e) {
   closeCOSDocument(cosDoc);
   throw new DocCenterException("无法处理该PDF文档", e);
  }
  if (cosDoc.isEncrypted()) {
   if (cosDoc != null)
    closeCOSDocument(cosDoc);
   throw new DocCenterException("该PDF文档是加密文档,无法处理");
  }
  String docText = null;
  try {
   PDFTextStripper stripper = new PDFTextStripper();
   docText = stripper.getText(new PDDocument(cosDoc));
  } catch (IOException e) {
   closeCOSDocument(cosDoc);
   throw new DocCenterException("无法处理该PDF文档", e);
  }

  PDDocument pdDoc = null;
  try {
   pdDoc = new PDDocument(cosDoc);
   PDDocumentInformation docInfo = pdDoc.getDocumentInformation();
   if(docInfo.getTitle()!=null && !docInfo.getTitle().equals("")){
    title = docInfo.getTitle();
   }

  } catch (Exception e) {
   closeCOSDocument(cosDoc);
   closePDDocument(pdDoc);
   System.err.println("无法取得该PDF文档的元数据" + e.getMessage());
  } finally {
   closeCOSDocument(cosDoc);
   closePDDocument(pdDoc);
  }
  
  return null;
 }

 private static COSDocument parseDocument(InputStream is) throws IOException {
  PDFParser parser = new PDFParser(is);
  parser.parse();
  return parser.getDocument();
 }

 private void closeCOSDocument(COSDocument cosDoc) {
  if (cosDoc != null) {
   try {
    cosDoc.close();
   } catch (IOException e) {
   }
  }
 }

 private void closePDDocument(PDDocument pdDoc) {
  if (pdDoc != null) {
   try {
    pdDoc.close();
   } catch (IOException e) {
   }
  }
 }

 代码复制可能出错,不过代码经过测试,绝对能用,POI为3.0-rc4,PDFBOX为0.7.3

分享到:
评论
1 楼 watchsx 2012-02-03  
private static COSDocument parseDocument(InputStream is) throws IOException { 
 
}

相关推荐

    poi将word、PPT、Excel转pdf实现在线预览的jar包

    标题中的“poi将word、PPT、Excel转pdf实现在线预览的jar包”涉及到的是Apache POI库在Java开发中的应用,以及如何利用它来处理Microsoft Office文档并转换为PDF格式,以便进行在线预览。Apache POI是Java平台上用于...

    POI修改word、excel、pdf、ppt文件属性如作者以及将其转成html

    Apache POI是一个强大的Java库,专门用于处理Microsoft Office格式的文件,如Word(.doc, .docx)、Excel(.xls, .xlsx)、PowerPoint(.ppt, .pptx)等。通过使用POI,开发者可以创建、读取、修改这些文件,并且将...

    word、excel、ppt转pdf,spring boot小demo

    本项目是一个基于Spring Boot框架实现的实用工具,用于将Microsoft Office的三种常见文件格式——Word(.docx)、Excel(.xlsx)和PowerPoint(.pptx)转换为PDF格式。这个小Demo提供了完整的功能,无需任何水印,...

    JAVA读取WORD_EXCEL_POWERPOINT_PDF文件的方法(poi)

    JAVA 读取 WORD_EXCEL_POWERPOINT_PDF 文件的方法(poi) JAVA 读取 WORD_EXCEL_POWERPOINT_PDF 文件的方法是使用 Apache POI 库来实现的。POI 库是一个开放源代码的 Java 库,提供了对 Microsoft Office 文件格式...

    poi 解析 office excel 2003,2007 word 2003,2007 的示例

    Apache POI 是一个开源项目,专门用于处理Microsoft Office格式的文件,包括Excel、Word和PowerPoint等。在Java环境中,Apache POI 提供了API,使得开发者能够方便地读取、写入和修改这些文件。本示例将详细介绍如何...

    java为多种文档(word ppt pdf excel)添加文本水印

    本教程将详细介绍如何使用Free Spire.Office for Java库为Word、PPT和PDF文档添加文本水印,以及如何利用Apache POI库为Excel文档实现相同功能。 1. **Free Spire.Office for Java** Free Spire.Office for Java是...

    java解析pdf,word,ppt,excel 源码

    通过上述分析,我们可以看到,使用Java解析PDF、Word、PPT和Excel文档主要是依赖于两个强大的库:PDFBox和POI。这两个库提供了丰富的API,可以方便地进行文档的读写操作。无论是提取文档中的文本,还是进一步的数据...

    word,excel,ppt文件转换成pdf文件

    总结来说,Java代码实现的Word、Excel和PPT转PDF工具类是通过使用Apache POI库读取Office文件,再结合iText、PDFBox或Aspose等库生成PDF,从而完成文件格式的转换。这种转换有助于确保文档在各种环境下的统一展示,...

    在线或本地读取word、ppt、pdf、excel、doc等文件

    在IT领域,尤其是在文档处理和数据管理中,能够在线或本地读取各种文件格式,如Word、PPT、PDF、Excel以及Doc等,是至关重要的技能。这些文件格式广泛应用于日常工作、学术研究和项目协作中,因此理解如何有效读取和...

    lucene word ppt excel pdf全文检索

    例如,可以使用Apache POI解析Word和Excel文件,Apache Slide和Apache POI的HSLF模块处理PPT文件,PDFBox或iText解析PDF文件。TXT文件则可以直接读取。 2. **内容提取**:从解析后的数据中提取出文本内容,过滤掉...

    word、ppt、excel转pdf的Demo

    总的来说,这个"word、ppt、excel转pdf的Demo"项目展示了如何利用Java编程和特定库来实现Office文档到PDF的转换,这对于那些需要在不同平台之间共享和分发文档的组织来说,是一个非常实用的工具。开发者可以基于此...

    word、ppt、excel转pdf读取页数Demo

    本Demo主要关注将Microsoft Office的三种主要文件类型——Word(.doc或.docx)、PowerPoint(.ppt或.pptx)和Excel(.xls或.xlsx)转换为PDF格式,并在此过程中读取转换后的PDF文件的页数。以下是对这个主题的详细...

    将pdf,ppt,word,excel在浏览器中打开

    在IT行业中,将PDF、PPT、Word和Excel等文档在浏览器中打开是一种常见的需求,尤其是在Web应用中提供在线预览功能。为了实现这一功能,我们可以利用特定的技术和工具,如PDF.js、Java以及OpenOffice。 PDF.js是...

    POI将文件转为html

    在IT行业中,尤其是在数据处理和文档管理领域,Apache POI是一个非常重要的库,它允许开发者使用Java处理Microsoft Office格式的文件,如Excel、Word和PowerPoint。本篇将详细讲解如何利用Apache POI将不同类型的...

    word,excel,ppt转换成pdf项目的依赖jar

    总之,“word,excel,ppt转换成pdf项目的依赖jar”是一个基于Java的解决方案,通过集成Apache POI、iText和PDFBox等库,实现了Office文档到PDF的高效转换。如果你在Java环境中处理文件转换,这个项目可以作为一个有...

    基于poi封装的word-excel-Pdf导出的xdoc设计,xdoc的jar包,加代码

    Apache POI 是一个流行的开源库,它允许Java开发者读取、创建和修改Microsoft Office格式的文件,如Word(.doc/.docx)、Excel(.xls/.xlsx)和PowerPoint(.ppt/.pptx)。在你提供的信息中,“基于poi封装的word-...

    poi实现合并word文档共4页.pdf.zip

    Apache POI是一个强大的Java库,专门用于处理Microsoft Office格式的文件,如Word(.doc, .docx)、Excel(.xls, .xlsx)和PowerPoint(.ppt, .pptx)。在“poi实现合并word文档共4页.pdf.zip”这个案例中,我们可以...

    java文档excel、word、pdf、ppt转图片

    在Java编程环境中,将文档(如Excel、Word、PDF、PPT)转换为图片是一种常见的需求,这在处理大量文档预览、数据可视化或者移动设备兼容性问题时尤其有用。以下是一些关于如何使用Java实现这种转换的关键知识点: 1...

    Android 本地预览Excel,Word,PPT,PDF 源代码

    这个“Android本地预览Excel,Word,PPT,PDF源代码”项目提供了解决这一需求的解决方案。它允许用户在不离开应用程序的情况下,在Android设备上预览这些常见办公格式的文件。 首先,我们要关注的是“asposed转Excel...

    poi-3.17带生成PDF jar包

    Apache POI 是一个开源项目,专门用于处理Microsoft Office格式的文件,如Word(.doc, .docx)、Excel(.xls, .xlsx)和PowerPoint(.ppt, .pptx)。在Java环境中,POI 提供了丰富的API,使得开发者能够创建、修改和...

Global site tag (gtag.js) - Google Analytics