【问题标题】:How to get HEADER / FOOTER from docx using docx4j如何使用 docx4j 从 docx 获取 HEADER / FOOTER
【发布时间】:2019-06-14 10:01:39
【问题描述】:

我正在尝试从 word 文档中获取页眉页脚并将它们附加到 StringBuilder。我遇到了一些类似的问题,这些问题导致我低于 sn-p:

    StringBuilder sb = new StringBuilder()
    RelationshipsPart rp = documentPart.getRelationshipsPart();
    for ( Relationship r : rp.getJaxbElement().getRelationship()  ) {
        if (r.getType().equals(Namespaces.HEADER)|| r.getType().equals(Namespaces.FOOTER)) {
            println ("Entered inside header / footer")
            //How do I append the values to sb??
        }
    }

我的 DOCx 中页眉/页脚的 XML 如下所示:

   <w:p w:rsidR="00AA4A9B" w:rsidP="00AA4A9B" w:rsidRDefault="00AA4A9B" w14:paraId="76FE289B" w14:textId="0EA049BC">
        <w:pPr>
            <w:pStyle w:val="Header"/>
            <w:jc w:val="center"/>
        </w:pPr>
        <w:r>
            <w:t>SOME TEXT HERE</w:t>
        </w:r>
        <w:r w:rsidR="000671A8">
            <w:t xml:space="preserve"> </w:t>
        </w:r>
        <w:bookmarkStart w:name="_GoBack" w:id="0"/>
        <w:bookmarkEnd w:id="0"/>
        <w:r>
            <w:t>SOME MORE TEXT HERE</w:t>
        </w:r>
    </w:p>

问题

如何将&lt;w:t&gt; 中的值放入 StringBuilder?

【问题讨论】:

    标签: java docx docx4j


    【解决方案1】:

    最简单的是使用TextUtils.getText:https://github.com/plutext/docx4j/blob/master/src/main/java/org/docx4j/TextUtils.java#L55

    类似:

      HeaderPart hp = rp.getPart(r);
      String headerText = TextUtils.getText(hp.getContents());
    

    请注意,还有https://github.com/plutext/docx4j/blob/master/src/samples/docx4j/org/docx4j/samples/HeaderFooterList.java 用于对页眉和页脚部分进行更高级别的访问。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-03
      • 1970-01-01
      • 2021-01-21
      • 1970-01-01
      • 1970-01-01
      • 2015-12-04
      • 1970-01-01
      • 2013-12-26
      相关资源
      最近更新 更多