Самый быстрый способ прочитать количество страниц файлов Docx в Java (после рендеринга Word)? - PullRequest
1 голос
/ 26 марта 2020

Я создаю docx файлы, используя docx4j. После создания документа мне нужно знать количество страниц.

Я знаю, что могу прочитать постоянное количество страниц, используя 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, возвращающий 1 количество страниц для файла docx ).

Когда вы открываете документ в Word, вы можете заметить, что количество страниц стабильно обновляется в течение первых нескольких секунд (что подтверждает, что начальное количество страниц равно 1, и Word обновляет его динамически после применения стилей et c., которые влияют на количество страниц).

Я читал, что Вы можете сначала преобразовать его в PDF, а затем прочитать количество страниц. пример преобразования PDF, предоставленный docx4j на github , использует коммерческий конвертер PDF, поэтому я не могу использовать этот код повторно. Кроме того, преобразование его в PDF сначала кажется мне громоздким и излишне трудоемким.

Вопрос : Какой самый быстрый способ прочитать количество страниц файлов docx в Java без Вы используете коммерческое программное обеспечение?

// Редактировать: Вопрос Количество страниц в слове do c в java, к сожалению, мне не помогает. Как я писал выше, apache POI (и другие API) считывают только постоянное количество страниц (которое равно 1). Что мне нужно, так это фактическое количество страниц, которое Word будет отображать при фактическом открытии файла.

1 Ответ

1 голос
/ 27 марта 2020

Вы можете использовать documents4j (хотя для этого нужен Word); см. https://www.docx4java.org/blog/2020/03/documents4j-for-toc-update/

Возможно, вам придется немного изменить word_convert.vbs.

...