我想合并两个或多个docx文件(将它们附加在一起(或将文档的一部分(XWPFParagraph(移动到其他地方。
问题是,在这样的操作之后,列表总是会中断。假设我们在具有序列号的文档中有一个列表,那么我们在另一个具有项目符号或字母的文档中有其他列表。比在副本之后,所有项目符号都变成了数字(或者更糟糕的数字,从上一个列表结束的地方开始(。
我已经尝试了几种解决方案:
遍历正文元素并像这里一样手动复制段落和表格。
-将一个新身体附加到现有的身体中,就像这里一样
除了页面范围的样式之外,它们运行良好。但房源从来没有。这是否意味着列表符号存储为页面范围的信息(否则将使用 XWPFParagraph 成功复制(?如果是,那么为什么和在哪里?
我已经深入研究了javadoc:https://poi.apache.org/apidocs/dev/org/apache/poi/xwpf/usermodel/XWPFDocument.html
但是找不到有关列表的任何信息。
Office Open XML
文件格式的Word
编号(编号列表,但也包括项目符号列表(存储在*.docx
ZIP
存档/word/numbering.xml
中。有描述列表格式的abstractNum
元素和引用abstractNum
num
元素。/word/document.xml
段落中引用了num
要素的numId
,以规定该段落应使用哪种编号格式。引用相同numId
的段落位于同一列表中。 引用不同numId
的段落位于不同的列表中。
在apache poi
中,有XWPFNumbering代表文档部分/word/numbering.xml
和XWPFAbstractNum代表abstractNum
。
到目前为止,如果不使用低级ooxml-schemas
类,就无法从头开始创建XWPFAbstractNum
。
另外,据我所知,没有简单的方法来合并不同Word
文档/word/numbering.xml
文档部分,因为需要处理/word/numbering.xml
中的不同Id
以及它们在/word/document.xml
中的出现。这非常复杂,我不知道任何免费库可以正确执行此操作。
一般来说,据我所知,由于Word
文件格式的复杂存储,没有简单的方法可以将不同的Word
文档合并在一起。所有使用自由代码提供的可能性都只是有用的一半(遍历和复制(,如果不是错误和无用(简单地一个接一个地附加多个文档正文(。