我有一个与XPages-docx4j类似的问题,用文本替换书签,但我想保留样式。我的书签不在文本上(因为它是由Google Docs创建的docx),我想保留书签后面的文本,以便将其包含在书签中并保持其样式。例如:
<w:bookmarkStart w:colFirst="0" w:colLast="0" w:name="3znysh7" w:id="2"/><w:bookmarkEnd w:id="2"/>
<w:r w:rsidDel="00000000" w:rsidR="00000000" w:rsidRPr="00000000">
<w:rPr>
<w:rFonts w:ascii="Calibri" w:cs="Calibri" w:eastAsia="Calibri" w:hAnsi="Calibri"/>
<w:i w:val="1"/>
<w:color w:val="1e4d78"/>
<w:rtl w:val="0"/>
</w:rPr>
<w:t xml:space="preserve">MY_BOOKMARK</w:t>
</w:r>
我找到了删除书签后文本的解决方案,我找到了在书签内添加文本的解决方法,但我无法保留样式。
我不是以英语为母语的人,所以如果我不清楚,请毫不犹豫地问我。
在这种情况下,我创建了一个新的R并将其插入bookmarkStart和bookmarkEnd之间。我对这种示例还有另一个问题:
<w:bookmarkStart w:colFirst="0" w:colLast="0" w:name="30j0zll" w:id="1" />
<w:bookmarkEnd w:id="1" />
<w:p w:rsidR="00000000" w:rsidDel="00000000" w:rsidP="00000000" w:rsidRDefault="00000000" w:rsidRPr="00000000">
<w:pPr>
<w:pBdr />
<w:tabs>
<w:tab w:val="left" w:pos="1560" />
</w:tabs>
<w:spacing w:after="0" w:lineRule="auto" />
<w:contextualSpacing w:val="0" />
<w:rPr>
<w:color w:val="2f5496" />
<w:sz w:val="28" />
<w:szCs w:val="28" />
</w:rPr>
</w:pPr>
<w:r w:rsidDel="00000000" w:rsidR="00000000" w:rsidRPr="00000000">
<w:rPr>
<w:color w:val="2f5496" />
<w:sz w:val="20" />
<w:szCs w:val="20" />
<w:rtl w:val="0" />
</w:rPr>
<w:t xml:space="preserve">MY_BOOKMARK1.</w:t>
</w:r>
<w:bookmarkStart w:colFirst="0" w:colLast="0" w:name="1fob9te" w:id="2" />
<w:bookmarkEnd w:id="2" />
<w:r w:rsidDel="00000000" w:rsidR="00000000" w:rsidRPr="00000000">
<w:rPr>
<w:color w:val="2f5496" />
<w:sz w:val="20" />
<w:szCs w:val="20" />
<w:rtl w:val="0" />
</w:rPr>
<w:t xml:space="preserve">MY_BOOKMARK2</w:t>
</w:r>
<w:r w:rsidDel="00000000" w:rsidR="00000000" w:rsidRPr="00000000">
<w:rPr>
<w:rtl w:val="0" />
</w:rPr>
</w:r>
</w:p>
我的解决方案 :
希望能帮助别人
我在XPages应用程序中使用docx4j创建包含XPage内容的Word文档。Word文档(.docx格式)是基于模板(.dotx格式)创建的。my.dotx模板中的一个书签如下: 使用函数 我可以通过调用 或CTBookmark对象调用 然而,一旦我有了这些对象,我不知道如何添加文本(XPage内容)来替换书签。我在网上尽可能多地阅读了关于这个话题的资料,但是找不到这样做的方法。有人有什么建议
我有一些占位符的docx文档。现在我应该用其他内容替换它们,并保存新的docx文档。我从docx4j开始,发现了这个方法: 但这很少起作用,因为通常占位符会在多个文本运行中拆分。 如何解决这个问题?
编辑:我发现如果我向UnmarshallFromTemplate.docx添加一些文本并保存它,它不会替换新的文本行。-标记以某种方式拆分为多个标记: 编辑document.xml中的文本并添加缺少的信息没有多大帮助。 编辑2: 伙计们。我找到了一个非常适合自己的解决办法,不知道为什么花了这么长时间才弄明白。正如我所说的:运行在哪里分裂,原因是在我看来是${}。因此,我只是在占位符之前使用了一个#
有没有办法做到这一点?
我正试图从word文档中替换文本或合并字段。我发现我可以为此使用docx4j。 我阅读了docx4j的文档和其他一些相关文章,如docx4j-如何用值替换占位符。但是,我似乎不能正确地理解文档和帖子来解决这个问题。
代码示例: 我发现了许多类似的问题(比如“替换Apache POI XWPF中的文本”),但没有找到我的问题的答案(这里的答案“Apache POI XWPFRun对象中的分离文本行”提供了不方便的解决方案)。 我尝试使用docx4j,这个示例=>“docx4j find and replace”,但是docx4j的工作原理与此相似。 ,那个模板位于不同的xml标记中,我不明白为什么... 请帮助