当前位置: 首页 > 知识库问答 >
问题:

docx4j-用文本和样式替换书签

锺离刚洁
2023-03-14

我有一个与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>

我找到了删除书签后文本的解决方案,我找到了在书签内添加文本的解决方法,但我无法保留样式。

我不是以英语为母语的人,所以如果我不清楚,请毫不犹豫地问我。

共有1个答案

孟晋
2023-03-14

在这种情况下,我创建了一个新的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>

我的解决方案 :

  1. 保留名为0j0zll的书签
  2. 创建一个新书签(id是xml文件中书签的编号;id)并将其插入

希望能帮助别人

 类似资料:
  • 我在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标记中,我不明白为什么... 请帮助