Даже этот код не делает ничего, кроме простого добавления нескольких тел документа. Сначала создается новый XWPFDocument
, который уже содержит один CTBody
. Затем он использует XWPFDocument.getDocument()
, который получает org.openxmlformats.schemas.wordprocessingml.x2006.main.CTDocument1
этого нового XWPFDocument
, а затем добавляет к нему два новых CTBody
элемента. После этого CTDocument1
будет иметь три CTBody
элемента.
Но согласно Office Open XML
a CT_Document
может иметь только один элемент типа CT_Body
.
Следующий XML фрагмент схемы определяет содержимое элемента CT_Document
:
<complexType name="CT_Document">
<complexContent>
<extension base="CT_DocumentBase">
<sequence>
<element name="body" type="CT_Body" minOccurs="0" maxOccurs="1"/>
</sequence>
</extension>
</complexContent>
</complexType>
Как вы видите: CT_Body
встречается в 1 раз максимум.
Объединение двух Word
документов - это не просто объединение тел документов. Все элементы в телах должны быть объединены в один CTBody
элемент. Есть и другие части отдельных файловых систем Word
(темы, стили, таблица шрифтов, комментарии, нумерация, медиа, ...), которые также необходимо объединить. Я не знаю ни одной бесплатной библиотеки Java
, кроме OpenOffice
или LibreOffice
, которая могла бы сделать это правильно.