doc、docx页码跟系统字体,渲染方式有关,需要预览,或则转成pdf才能知道最终页数。
pdf页码是个属性,可以直接读取,获取比较容易。
1:poi获取
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
public class WordPageCount {
public static void main(String[] args) {
File file = new File("example.docx");
try (FileInputStream fis = new FileInputStream(file);
XWPFDocument document = new XWPFDocument(fis)) {
int pageCount = document.getProperties().getExtendedProperties().getPages();
System.out.println("Page count: " + pageCount);
} catch (IOException e) {
e.printStackTrace();
}
}
}
缺点:几乎不准,可以忽略。
2: spire.doc获取(相对准确,页数越多速度越慢,因为需要渲染,其它功能需要收费)
spire.doc是国内开发的一款软件,感觉也是基于poi 在windows和mac获取页码相对比较准(字体库比较全),误差在±1左右 在linux需要先安装中文字体 官网地址:

本文介绍了使用Java获取Word(doc、docx)文件页数的三种方法:Apache POI、Spire.Doc和Aspose.Words。尽管POI方式获取页数几乎不准确,Spire.Doc相对准确但速度较慢且有收费限制,而Aspose.Words的免费版存在页数和水印限制,但转换后的PDF质量良好。

205

被折叠的 条评论
为什么被折叠?



