对于基于服务器的j2ee应用程序,我需要从word文档中检索页面数量..任何想法是否有效?
答案 0 :(得分:3)
如果文档是现代Word 2007格式,您可以通过OOXML使用基于XML的直接操作。这是迄今为止更好的长期解决方案,但我意识到整个组织在一夜之间改变可能并不现实。
如果它们是较旧的Word格式,您可能会遇到服务器端的Word / Excel / Powerpoint / Outlook可编程对象模型,尽管you're not supposed to do that on the server ..
答案 1 :(得分:3)
关于Office Open XML支持,Java-POI的最新测试版应该支持它。
答案 2 :(得分:1)
之前没有使用它,但您可以尝试Apache POI。看起来它有WordCount功能。
答案 3 :(得分:0)
//打开Word文档
Document doc = new Document("C:\\Temp\\file.doc");
//获取页数
int pageCount = doc.getPageCount();
答案 4 :(得分:0)
要读取MS Office文件的页数,可以使用aspose库(aspose字,aspose单元格,aspose-slides)。
示例:
Excel: Woorkbook的可打印版本的页数:
import com.aspose.cells.*;
public int getPageCount(String filePath) throws Exception {
Workbook book = new Workbook(filePath);
ImageOrPrintOptions imageOrPrintOptions = new ImageOrPrintOptions();
// Default 0 Prints all pages.
// IgnoreBlank 1 Don't print the pages which the cells are blank.
// IgnoreStyle 2 Don't print the pages which cells only contain styles.
imageOrPrintOptions.setPrintingPage(PrintingPageType.IGNORE_STYLE);
int pageCount = 0;
for (int i = 0; i < book.getWorksheets().getCount(); i++) {
Worksheet sheet = book.getWorksheets().get(i);
PageSetup pageSetup = sheet.getPageSetup();
pageSetup.setOrientation(PageOrientationType.PORTRAIT);
pageSetup.setPaperSize(PaperSizeType.PAPER_LETTER);
pageSetup.setTopMarginInch(1);
pageSetup.setBottomMarginInch(1);
pageSetup.setRightMarginInch(1);
pageSetup.setLeftMarginInch(1);
SheetRender sheetRender = new SheetRender(sheet, imageOrPrintOptions);
int sheetPageCount = sheetRender.getPageCount();
pageCount += sheetPageCount;
}
return pageCount;
}
字:页数:
import com.aspose.words.Document;
public int getPageCount(String filePath) throws Exception {
Document document = new Document(filePath);
return document.getPageCount();
}
PowerPoint:幻灯片数量:
import com.aspose.slides.*;
public int getPageCount(String filePath) throws Exception {
Presentation presentation = new Presentation(filePath);
return presentation.getSlides().toArray().length;
}