java读取word文件页数方法汇总

java读取word文件页数

最近在做一个word转html的小功能,需要用到事先获得word文件的页数来判断是否要进行转换。我从网上搜了下,发现大多数文章都写的是错误的,这里来汇总下,正确的文章我会直接放链接,毕竟那是别人的劳动成果,希望大家都支持原作者。

错误的方式汇总

1、使用Apache POI
该方式代码我就不详细贴了,只贴回来获取页数那一行:

int pages = docx.getProperties().getExtendedProperties().getUnderlyingProperties().getPages();//总页数

这个pages基本上是错误的,所以大家不要去用。

2、使用jacob
该方法我会贴详细代码,但是请注意,这个工具大概只适用于10页以内的文档,10页以上读出来的页数基本就是错的。

import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;
    public static void main(String[] args) {
        String filePath = "F:\\temporaryFile\\japp-upload\\elec\\clause\\S1250-0001\\S1250-0001.docx";// word文档所在路径
        // 建立ActiveX部件
        ActiveXComponent wordCom = new ActiveXComponent("Word.Application");
        //word应用程序不可见
        wordCom.setProperty("Visible", false);
        // 返回wrdCom.Documents的Dispatch
        Dispatch wrdDocs = wordCom.getProperty("Documents").toDispatch();//Documents表示word的所有文档窗口(word是多文档应用程序)
        // 调用wrdCom.Documents.Open方法打开指定的word文档,返回wordDoc
        Dispatch wordDoc = Dispatch.call(wrdDocs, "Open", filePath, false, true, false).toDispatch();
        Dispatch selection = Dispatch.get(wordCom, "Selection").toDispatch();
        int pages = Integer.parseInt(Dispatch.call(selection,"information",4).toString());//总页数 //显示修订内容的最终状态
        System.out.println(pages);
        //关闭文档且不保存
        Dispatch.call(wordDoc, "Close", new Variant(false));
        //退出进程对象
        wordCom.invoke("Quit", new Variant[] {});
    }

3、使用Spire.Doc
免费版的缺陷,免费版的解析doc/docx文档,读出文档页数很玄幻,页数是真正的页数±1,而且它的免费版只能处理word文档35页以内的内容,35页以上的文档,永远只处理前35页……我去咨询了这个工具的销售,贵!跟我领导讲了价格,领导不同意购买。所以我也不知道付费版的这个功能有没有改善。
但是有一说一,这个工具还挺强大的,处理各种文档都可,就一个字,贵!贫穷使我们相遇,它的jar包很大很大,运行速度有点慢。免费版的还挺香的哈哈
这里附上Spire.Doc的官网word文件操作说明以及非常简单的代码
https://www.e-iceblue.cn/spiredocforjavaconversion/convert-word-to-png-in-java.html

	//创建Document对象
    Document doc = new Document();
    //加载Word文档
    doc.loadFromFile(docPath);
    int page = doc.getPageCount();

正确的方式

java准确读取word文件页数
https://blog.csdn.net/tiandixuanwuliang/article/details/71298406

思路是:使用pdf格式读取页数,word格式先转pdf再读取。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值