Как получить заголовок / нижний колонтитул из docx, используя docx4j - PullRequest
0 голосов
/ 21 января 2019

Я пытаюсь получить верхний колонтитул из текстового документа и добавить их к StringBuilder. Я столкнулся с некоторыми похожими вопросами, которые привели меня к следующему фрагменту:

    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??
        }
    }

XML для моего верхнего / нижнего колонтитула в моем DOCx приведен ниже:

   <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>

Вопрос

Как я могу получить значения в <w:t> в StringBuilder?

1 Ответ

0 голосов
/ 21 января 2019

Проще всего использовать 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 для доступа более высокого уровня к заголовку.и части нижнего колонтитула.

...