如何在doc中添加Trackchanges(del / ins)?

时间:2014-11-06 18:03:30

标签: java docx4j

我需要在java中操作docx文档,我刚刚开始评估docx4j。到目前为止,我已经设法对我的文档执行一些操作(添加文本,删除段落,隔离文档的一部分......)但我仍然有管理Trackchanges(插入和删除)的问题。如果有人对这个问题有所了解,我将不胜感激,因为到目前为止this是我在这个问题上找到的最合适的文件。

为了说明这个问题,我将举例说明我想要实现的目标。我有以下平板OPC格式的docx:

<w:pPr>
    <w:pStyle w:val="Normal"/>
</w:pPr>
<w:sdt>
    <w:sdtContent>
        <w:r>
            <w:t>First deleted part</w:t>
        </w:r>
    </w:sdtContent>
</w:sdt>
<w:sdt>
    <w:sdtContent>
        <w:r>
            <w:t>(</w:t>
        </w:r>
        <w:r>
            <w:t>(second deleted part)</w:t>
        </w:r>
    </w:sdtContent>
</w:sdt>

我需要添加trackchanges(代码是由Word本身生成的,而不是以编程方式生成):

<w:pPr>
    <w:pStyle w:val="Normal"/>
</w:pPr>
<w:customXmlDelRangeStart w:id="4" w:author="AddedProgramatically" w:date="2014-11-06T18:22:00Z"/>
<w:sdt>
    <w:sdtContent>
        <w:customXmlDelRangeEnd w:id="4"/>
        <w:del w:id="5" w:author="AddedProgramatically" w:date="2014-11-06T18:22:00Z">
            <w:r>
                <w:delText>First deleted part</w:delText>
            </w:r>
        </w:del>
        <w:customXmlDelRangeStart w:id="8" w:author="AddedProgramatically" w:date="2014-11-06T18:22:00Z"/>
    </w:sdtContent>
</w:sdt>
<w:customXmlDelRangeEnd w:id="8"/>
<w:customXmlDelRangeStart w:id="9" w:author="AddedProgramatically" w:date="2014-11-06T18:22:00Z"/>
<w:sdt>
    <w:sdtEndPr/>
    <w:sdtContent>
        <w:customXmlDelRangeEnd w:id="9"/>
        <w:del w:id="10" w:author="AddedProgramatically" w:date="2014-11-06T18:22:00Z">
            <w:r>
                <w:delText>(second deleted part)</w:delText>
            </w:r>
        </w:del>
        <w:customXmlDelRangeStart w:id="15" w:author="AddedProgramatically" w:date="2014-11-06T18:22:00Z"/>
    </w:sdtContent>
</w:sdt>
<w:customXmlDelRangeEnd w:id="15"/>
<w:sdt>
    <w:sdtContent>
        <w:ins w:id="16" w:author="AddedProgramatically" w:date="2014-11-06T18:21:00Z">
            <w:r>
                <w:t>First inserted part</w:t>
            </w:r>
        </w:ins>
    </w:sdtContent>
</w:sdt>
<w:sdt>
    <w:sdtContent>
        <w:ins w:id="19" w:author="AddedProgramatically" w:date="2014-11-06T18:21:00Z">
            <w:r>
                <w:t>(second inserted part)</w:t>
            </w:r>
        </w:ins>
    </w:sdtContent>
</w:sdt>

在我的java代码中,我设法复制sdt并将其添加到最终文档中。我缺少的是最复杂的部分:添加trackchanges。到目前为止我的代码:

ObjectFactory factory = Context.getWmlObjectFactory();
CTTrackChange cttc = factory.createCTTrackChangeRange();
cttc.setParent(para);
cttc.setAuthor(userPhraseology);
final SdtRun copy = XmlUtils.deepCopy(sdt); // And now? How to add the trackchanges into the sdt?

非常感谢您的启发。

0 个答案:

没有答案