我用docx4j编写了一个生成器,它将专有数据模型作为输入并生成docx文件作为输出。
我尝试按照以下示例添加脚注(和脚注引用(:https://github.com/plutext/docx4j/blob/master/src/samples/docx4j/org/docx4j/samples/FootnoteAdd.java
但是,我看不出如何将样式添加到表示脚注引用的运行中。我创建它就像在示例中一样:
CTFtnEdnRef ftnednref = wmlObjectFactory.createCTFtnEdnRef();
JAXBElement<org.docx4j.wml.CTFtnEdnRef> ftnednrefWrapped = wmlObjectFactory.createRFootnoteReference(ftnednref);
r.getContent().add( ftnednrefWrapped);
ftnednref.setId( BigInteger.valueOf( i) );
如何向ftnednref
添加样式信息?最终,这个"运行"在我的结果中是一个正常的运行,但它没有 RStyle FootnoteReference
,这意味着它在我的文档中不在上标中。我认为这种样式应该自动应用,但事实并非如此。我的结果如下所示:
<w:r>
<w:rPr>
<w:highlight w:val="darkCyan"/>
</w:rPr>
<w:footnoteReference w:id="2"/>
</w:r>
它重用前面运行的rPr
。如何确保此脚注引用运行具有正确的样式?
中创建示例文档,则可以使用 docx4j Web 应用程序或帮助程序 Word AddIn 来生成相应的 Java 代码。
我这个案子,我得到:
<w:r>
<w:rPr>
<w:rStyle w:val="FootnoteReference"/>
<w:lang w:val="en-AU"/>
</w:rPr>
<w:footnoteReference w:id="1"/>
</w:r>
和
// Create object for r
R r2 = wmlObjectFactory.createR();
p.getContent().add( r2);
// Create object for rPr
RPr rpr2 = wmlObjectFactory.createRPr();
r2.setRPr(rpr2);
// Create object for rStyle
RStyle rstyle = wmlObjectFactory.createRStyle();
rpr2.setRStyle(rstyle);
rstyle.setVal( "FootnoteReference");
// Create object for lang
CTLanguage language2 = wmlObjectFactory.createCTLanguage();
rpr2.setLang(language2);
language2.setVal( "en-AU");
// Create object for footnoteReference (wrapped in JAXBElement)
CTFtnEdnRef ftnednref = wmlObjectFactory.createCTFtnEdnRef();
JAXBElement<org.docx4j.wml.CTFtnEdnRef> ftnednrefWrapped = wmlObjectFactory.createRFootnoteReference(ftnednref);
r2.getContent().add( ftnednrefWrapped);
ftnednref.setId( BigInteger.valueOf( 1) );
所以你需要的位是:
// Create object for rStyle
RStyle rstyle = wmlObjectFactory.createRStyle();
rpr.setRStyle(rstyle);
rstyle.setVal( "FootnoteReference");
您还需要在样式部分中定义脚注引用样式。