帮我写一个java获取word、ppt、pdf、excel等文档页数的工具类,传参数是MultipartFile类型
时间: 2023-12-15 17:04:02 浏览: 98
Java读取Word文档页数
好的,以下是一个可以获取Word、PPT、PDF、Excel等文档页数的Java工具类,传入参数为MultipartFile类型的示例代码:
```java
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.usermodel.Range;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import java.io.IOException;
import java.io.InputStream;
public class DocumentPageCountUtil {
/**
* 获取Word文档页数
*
* @param file MultipartFile类型的Word文档
* @return Word文档页数
* @throws IOException
*/
public static int getWordPageCount(MultipartFile file) throws IOException {
InputStream inputStream = file.getInputStream();
HWPFDocument document = new HWPFDocument(inputStream);
Range range = document.getRange();
int pageCount = range.numParagraphs() / 28 + 1;
return pageCount;
}
/**
* 获取PPT文档页数
*
* @param file MultipartFile类型的PPT文档
* @return PPT文档页数
* @throws IOException
*/
public static int getPptPageCount(MultipartFile file) throws IOException {
InputStream inputStream = file.getInputStream();
XMLSlideShow ppt = new XMLSlideShow(inputStream);
int pageCount = ppt.getSlides().size();
return pageCount;
}
/**
* 获取PDF文档页数
*
* @param file MultipartFile类型的PDF文档
* @return PDF文档页数
* @throws IOException
*/
public static int getPdfPageCount(MultipartFile file) throws IOException {
InputStream inputStream = file.getInputStream();
PDDocument document = PDDocument.load(inputStream);
int pageCount = document.getNumberOfPages();
return pageCount;
}
/**
* 获取Excel文档页数
*
* @param file MultipartFile类型的Excel文档
* @return Excel文档页数
* @throws IOException
*/
public static int getExcelPageCount(MultipartFile file) throws IOException {
InputStream inputStream = file.getInputStream();
Workbook workbook;
if (file.getOriginalFilename().endsWith(".xls")) {
workbook = new HSSFWorkbook(inputStream);
} else {
workbook = new XSSFWorkbook(inputStream);
}
int pageCount = workbook.getNumberOfSheets();
return pageCount;
}
/**
* 获取文档页数
*
* @param file MultipartFile类型的文档
* @return 文档页数
* @throws IOException
*/
public static int getDocumentPageCount(MultipartFile file) throws IOException {
String originalFilename = file.getOriginalFilename();
if (originalFilename.endsWith(".doc")) {
return getWordPageCount(file);
} else if (originalFilename.endsWith(".docx")) {
return getWordPageCount(file);
} else if (originalFilename.endsWith(".ppt")) {
return getPptPageCount(file);
} else if (originalFilename.endsWith(".pptx")) {
return getPptPageCount(file);
} else if (originalFilename.endsWith(".pdf")) {
return getPdfPageCount(file);
} else if (originalFilename.endsWith(".xls")) {
return getExcelPageCount(file);
} else if (originalFilename.endsWith(".xlsx")) {
return getExcelPageCount(file);
} else {
throw new IOException("文件格式不支持");
}
}
}
```
这个工具类中,我们使用了Apache POI和Apache PDFBox这两个开源库来处理文档。其中,getWordPageCount方法用于获取Word文档页数,getPptPageCount方法用于获取PPT文档页数,getPdfPageCount方法用于获取PDF文档页数,getExcelPageCount方法用于获取Excel文档页数,getDocumentPageCount方法用于根据传入的文件类型调用相应的方法获取文档页数。
阅读全文