`
GoodWell
  • 浏览: 28850 次
  • 性别: Icon_minigender_1
  • 来自: 河北邢台
社区版块
存档分类

word、pdf等转换称txt格式

阅读更多

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();
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics