Docx4j: невозможно обновить оглавление документа

Мой код создает контент для текстового документа. Для этого я использую созданный мной шаблон слова, содержащий скелет. В этом слове у меня следующее содержание:

ТОС в слове скелет

Я сделал следующий код для создания некоторых заголовков:

WordprocessingMLPackage wDoc = WordprocessingMLPackage.load(new File(parameter.getDocTemplateFilePath()));

ObjectFactory objectFactory = Context.getWmlObjectFactory();

PPr pProperties = objectFactory.createPPr();

PStyle ps = objectFactory.createPPrBasePStyle();
ps.setVal("TITLE");
pProperties.setPStyle(ps);

P paragraph = objectFactory.createP();
paragraph.getContent().add(pProperties);

R run = objectFactory.createR();
Text t = objectFactory.createText();
t.setValue(title.toString());
run.getContent().add(t);

paragraph.getContent().add(run);
wDoc.getMainDocumentPart().addObject(paragraph);

где "TITLE" - это стиль, определенный в нашем шаблоне. Я хочу, чтобы эти заголовки были в ТОС. Для информации, стиль установлен на первом уровне иерархии оглавления.

После этого мы обновляем существующее оглавление и сохраняем файл с помощью:

TocGenerator tocGenerator = new TocGenerator(wDoc);
Toc.setTocHeadingText("");
tocGenerator.updateToc(false);

wDoc.save(file);

Проблема в том, что оглавление пусто, когда я открываю сгенерированный файл. Когда я нажимаю "Обновить таблицу" в Word, оглавление хорошо обновляется с хорошими заголовками. В логах у меня такое сообщение:

2019-09-10 14:37:50,295 ПРЕДУПРЕЖДЕНИЕ [threadPoolTaskExecutorVoteResult-2,-] [org.docx4j.toc.TocGenerator] Нет записей ToC!

Мы когда-либо пытались сгенерировать оглавление на Java, а не просто обновлять его, но, похоже, проблема связана с тем, что заголовки не распознаются во время обновления.

Спасибо за помощь!

0 ответов

Другие вопросы по тегам