Сообщение приходит отсюда:
/**
* Calculate page numbers
*
* @return
* @throws TocException
*/
private Map<String, Integer> getPageNumbersMap() throws TocException {
// @since 6.1, check bookmarks are ok first
// what to do if not ok?
// - default behaviour is to fail
// - but can be configured to remediate:
boolean remediate = Docx4jProperties.getProperty("docx4j.toc.BookmarksIntegrity.remediate", false);
//
BookmarksIntegrity bm = new BookmarksIntegrity();
StringWriter sw = new StringWriter();
bm.setWriter(sw);
BookmarksStatus result = null;
try {
// Checks are performed on all bookmarks, not just those with
// a name of the form "_Toc*". We don't check for missing _Toc bookmarks.
result = bm.check(wordMLPackage.getMainDocumentPart(), remediate);
} catch (Exception e) { /* won't happen */}
if (result==BookmarksStatus.BROKEN) {
throw new TocException("Encountered broken bookmarks; not configured to remediate. \n" + sw.toString());
}
if (Docx4J.pdfViaFO()) {
return getPageNumbersMapViaFOP();
} else {
// recommended
return getPageNumbersMapViaService();
}
}
Обратите внимание, что, если вы не являетесь уже имеющимся лицензиатом службы PDF Converter Plutext, вы не сможете использовать getPageNumbersMapViaService ().
Возможный альтернативный подход см. В https://www.docx4java.org/blog/2020/03/documents4j-for-toc-update/, основанном на https://www.docx4java.org/blog/2020/03/documents4j-for-pdf-output/