在Java中(在Word渲染之后)最快读取Docx文件的页数的方法?

问题描述 投票:1回答:1

我使用docx4j创建docx文件。创建文档后,我需要知道页数。

我知道我可以使用docx4j读取持久的页数,如下所示:

final WordprocessingMLPackage doc = ... // read doc
org.docx4j.openpackaging.parts.DocPropsExtendedPart docPropsExtendedPart = doc .getDocPropsExtendedPart();
org.docx4j.docProps.extended.Properties extendedProps = docPropsExtendedPart.getJaxbElement();
final Integer pages = extendedProps.getPages();

但是它总是返回1,因为那是持久化到docx文件的页数。 Apache POI显然会返回相同的结果(XWPFDocument returning 1 number of pages for docx file)。

[当您使用Word打开文档时,您会注意到在最初的几秒钟内页面数一直在稳定更新(这确认初始页面数是1,并且Word在应用样式等之后会动态更新)。影响页数)。

我读到您可以先将其转换为PDF,然后阅读页数。 sample PDF conversion provided by docx4j on github使用商用PDF转换器,因此我无法重复使用此代码。此外,对我来说,首先将其转换为PDF似乎很麻烦,并且不必要地耗时。

问题:在不使用商业软件的情况下,用Java读取docx文件的页数最快的方法是什么?

//编辑:不幸的是,Number of pages in a word doc in java问题对我没有帮助。如我上面所写,apache POI(和其他API)仅读取持久的页面数(即1)。我需要的是实际打开文件时Word将显示的实际页数。

java apache-poi docx docx4j
1个回答
0
投票

您可以使用documents4j(尽管这需要Word);参见https://www.docx4java.org/blog/2020/03/documents4j-for-toc-update/

您可能需要再自定义word_convert.vbs。

© www.soinside.com 2019 - 2024. All rights reserved.