Reputation: 4421
I want to merge two or more docx files (append them after each other) or move one part of the document(XWPFParagraph) to other place.
The problem is that listings always breaks after such an operation. Say we have a listing in a document which has sequence numbers then we have other listing in another document which has bullets or letters. Than after the copy all of the bullets becomes numbers (or worse numbers which starts from where the previous listing has been ended).
I have tried several solutions :
-traversing BodyElements and copying Paragraphs and Tables by hand like here.
-attaching a newBody into an existing one like here here
Aside from page scoped styles they work well. But the listings never. Is that means the listing symbols are stored as page scoped information (otherwise it would be copyied successfully with the XWPFParagraph)? If yes than why and where?
I have dig myself into the javadoc: https://poi.apache.org/apidocs/dev/org/apache/poi/xwpf/usermodel/XWPFDocument.html
But couldn't find anything about the listings.
Upvotes: 0
Views: 359
Reputation: 61915
The Word
numberings (numbered lists but bullet lists also) in Office Open XML
file format are stored in /word/numbering.xml
of the *.docx
ZIP
archive. There are abstractNum
elements describing the list format and num
elements referencing the abstractNum
. The numId
of the num
elements are referenced in paragraphs of /word/document.xml
to set which numbering formats shall be used in that paragraph. Paragraphs referencing the same numId
are in the same list.
Paragraphs referencing different numId
are in different lists.
In apache poi
there are XWPFNumbering representing the document part /word/numbering.xml
and XWPFAbstractNum representing the abstractNum
.
Until now there is no way creating XWPFAbstractNum
from scratch without using the low level ooxml-schemas
classes.
Also, as far as I know, there is no simple way to merge /word/numbering.xml
document parts of different Word
documents because of the need handling the different Id
s in /word/numbering.xml
as well as their occurrences in /word/document.xml
. This is very complex and I do not know any free library which can do this properly.
In general, as far as I know, there is no simple way to merge different Word
documents together because of the complex storage in Word
file formats. All provided possibilities using free code are only halfway useful (traversing and copying), if not wrong and useless (simply attaching multiple document bodys one after the other) at all.
Upvotes: 3