0

脚注を含む docx ファイルがあります。脚注テキストに置き換えが必要なプレースホルダーがあります。ノードを抽出し、プレースホルダーが渡されなかったテキスト値を変更している間。何らかの理由で、脚注に記載されているテキストを取り上げていないと思います。

脚注のプレースホルダーを置き換える方法を教えてください。

4

2 に答える 2

0

私のケースでは@JasonPlutextの答えがうまくいかなかったので、うまくいったものを投稿しています

FootnotesPart fp = template.getMainDocumentPart().getFootnotesPart();
List<Object> texts = fp.getJAXBNodesViaXPath("//w:t", true);

for(Object obj : texts) {
    Text text = (Text) ((JAXBElement) obj).getValue();
    String textValue = text.getValue();
    // do variable replacement
    text.setValue(textValue);
}

しかし、Docx4J.toPDF(..); を使用してこれを pdf としてエクスポートするときに、まだ問題に直面しています。出力は脚注参照を取得しません。

于 2016-06-07T13:44:40.450 に答える
0

アプローチ1

アンマーシャリングをまだ発生させていない場合は、より高速です。

FootnotesPart fp = wordMLPackage.getMainDocumentPart().getFootnotesPart();
fp.variableReplace(mappings);

アプローチ 2

    FootnotesPart fp = wordMLPackage.getMainDocumentPart().getFootnotesPart();

    // unmarshallFromTemplate requires string input
    String xml = XmlUtils.marshaltoString(fp.getJaxbElement(), true);
    // Do it...
    Object obj = XmlUtils.unmarshallFromTemplate(xml, mappings);
    // Inject result into docx
    fp.setJaxbElement((CTFootnotes) obj);
于 2016-06-07T06:55:15.530 に答える