如何修改docx4j

时间:2016-05-30 09:22:11

标签: docx4j footnotes

我有一个包含脚注的docx文件。我在脚注文本中有一个占位符需要替换。在提取节点并修改占位符未批准的文本值时。出于某种原因,我认为它没有拿起脚注中提供的文字。

请您指导我如何更换脚注中的占位符。

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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时,我仍然面临着这个问题; 输出不会获取脚注参考。