word、pdf等转换称txt格式

    技术2022-05-20  46

    1,Word文件转TXT文件

    这里是用了一个apache的poi工具,可以在http://poi.apache.org/下载它的jar包,将poi-3.1-FINAL-20080629.jar,poi-contrib-3.1-FINAL-20080629.jar,poi-scratchpad-3.1-FINAL-20080629.jar三个文件复制到工程的WEB-INF/lib目录下。

    解析的代码如下:

    /*** 将Word文件转换成txt文本文件* @author annlee* * @param fis,源文件的文件输入流* @param outputPath,输出文件的路径,这里指文件夹的路径* @param outputFileName,输出文件的文件名,包括文件后缀名* @return 转换成功返回字符串"OK";转换失败返回失败原因.*/public static String convertWordToTxt(FileInputStream fis,    String outputPath, String outputFileName) {   try {   WordExtractor extractor = new WordExtractor(fis);    String str = extractor.getText().trim(); // 获取Word文件中的字符

        String outputFile = outputPath + outputFileName + ".txt"; // 组装输出TXT文件的绝对路径

        FileOutputStream fos = new FileOutputStream(outputFile);    fos.write(str.getBytes());    fos.close();   } catch (FileNotFoundException e) {    return "文件不存在!";   } catch (IOException e) {    return "文件读写错误!";   }   return "OK";}

    2,PDF文件转TXT文件

    这里是用了一个PDFBox工具,可以在http://www.netlikon.de/docs/PDFBox-0.7.2/lib/下载它的jar包,将PDFBox-0.7.2-log4j.jar,PDFBox-0.7.2.jar这两个文件复制到工程的WEB-INF/lib目录下。

    这里多说一下,如果要通过程序生成PDF文件,有个工具很好用:iText是一个能够快速产生PDF文件的java类库。iText的java类对于那些要产生包含文本,表格,图形的只读文档是很有用的。它的类库尤其与java Servlet有很好的给合。使用iText与PDF能够使你正确的控制Servlet的输出。

    解析的代码如下:

    /*** 将PDF文件转换成txt文本文件* @author annlee* * @param fis,源文件的文件输入流* @param outputPath,输出文件的路径,这里指文件夹的路径* @param outputFileName,输出文件的文件名,包括文件后缀名* @return 转换成功返回字符串"OK";转换失败返回失败原因.*/public static String convertPdfToTxt(FileInputStream fis,    String outputPath, String outputFileName) {

       // 是否排序   boolean sort = false;

       // 开始提取页数   int startPage = 1;   // 结束提取页数   int endPage = Integer.MAX_VALUE;

       try {    // 内存中存储的PDF Document  PDDocument document = PDDocument.load(fis);

        String outputFile = outputPath + outputFileName + ".txt"; // 组装输出TXT文件的绝对路径

        FileOutputStream fos = new FileOutputStream(outputFile);

        OutputStreamWriter writer = new OutputStreamWriter(fos);

        // PDFTextStripper来提取文本    PDFTextStripper stripper = new PDFTextStripper();    // 设置是否排序    stripper.setSortByPosition(sort);    // 设置起始页    stripper.setStartPage(startPage);    // 设置结束页    stripper.setEndPage(endPage);    // 调用PDFTextStripper的writeText提取并输出文本    stripper.writeText(document, writer);

        fos.close();    writer.close();   } catch (FileNotFoundException e) {    return "文件不存在!";   } catch (IOException e) {    return "文件读写错误!";   }   return "OK";}

     

     

     

     

    3,PPT文件转TXT文件

    这里也用的是apache的poi工具,解析的代码如下:

    /*** 将PPT文件转换成txt文本文件* * @author annlee* * @param fis,源文件的文件输入流* @param outputPath,输出文件的路径,这里指文件夹的路径* @param outputFileName,输出文件的文件名,包括文件后缀名* @return 转换成功返回字符串"OK";转换失败返回失败原因.*/public static String convertPptToTxt(FileInputStream fis,    String outputPath, String outputFileName) {     StringBuffer content = new StringBuffer();   try {   SlideShow ss = new SlideShow(new HSLFSlideShow(fis));// 建立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()); //这里会将标题加到content中去    }    String outputFile = outputPath + outputFileName + ".txt"; // 组装输出TXT文件的绝对路径

        FileOutputStream fos = new FileOutputStream(outputFile);    fos.write(content.toString().getBytes());    fos.close();   } catch (FileNotFoundException e) {    return "文件不存在!";   } catch (IOException e) {    return "文件读写错误!";   }   return "OK";}

    3,EXCEL文件转TXT文件

    这里也用的是apache的poi工具,解析的代码如下:

    /*** 将EXCEL文件转换成txt文本文件* * @author annlee* * @param fis,源文件的文件输入流* @param outputPath,输出文件的路径,这里指文件夹的路径* @param outputFileName,输出文件的文件名,包括文件后缀名* @return 转换成功返回字符串"OK";转换失败返回失败原因.*/public static String convertXlsToTxt(FileInputStream fis,    String outputPath, String outputFileName) {

       StringBuffer content = new StringBuffer();   try {  HSSFWorkbook workbook = new HSSFWorkbook(fis);// 创建对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);// 获得列值          if (aCell.getCellType() == 1) {           content.append(aCell             .getStringCellValue());          } else if (aCell.getCellType() == 0) {           content.append(Double.toString(aCell             .getNumericCellValue())             + ",");          }         }        }       }      }     }    }    String outputFile = outputPath + outputFileName + ".txt"; // 组装输出TXT文件的绝对路径

        FileOutputStream fos = new FileOutputStream(outputFile);    fos.write(content.toString().getBytes());    fos.close();   } catch (FileNotFoundException e) {    return "文件不存在!";   } catch (IOException e) {    return "文件读写错误!";   }   return "OK";}

    这里生成的TXT文件中可能包含着一些另类的字符,我们可以在写文件之前将这些字符去掉:

    /*** 去掉字符串中多余的字符*/public static String washString(String str){   byte[] buffer = str.getBytes();   byte[] buffernew = new byte[buffer.length];   int j = 0;    for(int i =0 ; i< buffer.length; i++){    if((buffer[i] >=20 )||(buffer[i] < 0 )) {     buffernew[j++] = buffer[i];    }   }    String newStr = new String(buffernew);    newStr = newStr.replaceAll("FORMTEXT", "");   return newStr.trim(); }


    最新回复(0)