以编程方式为 footnoteReference 运行 设置样式
Programmatically set style for footnoteReference run
我用 docx4j 编写了一个生成器,它将专有数据模型作为输入并生成一个 docx 文件作为输出。
我尝试添加脚注(和脚注引用),按照此处的示例:https://github.com/plutext/docx4j/blob/master/src/samples/docx4j/org/docx4j/samples/FootnoteAdd.java
但是,我看不出如何向代表 footnoteReference 的 运行 添加样式。我完全按照示例中的方式创建它:
CTFtnEdnRef ftnednref = wmlObjectFactory.createCTFtnEdnRef();
JAXBElement<org.docx4j.wml.CTFtnEdnRef> ftnednrefWrapped = wmlObjectFactory.createRFootnoteReference(ftnednref);
r.getContent().add( ftnednrefWrapped);
ftnednref.setId( BigInteger.valueOf( i) );
如何向 ftnednref
添加样式信息?最终,这个 "run" 在我的结果中是一个普通的 运行,但它没有 RStyle FootnoteReference
,这意味着它在我的文档中不在上标中。我认为应该自动应用这种样式,但事实并非如此。我的结果如下所示:
<w:r>
<w:rPr>
<w:highlight w:val="darkCyan"/>
</w:rPr>
<w:footnoteReference w:id="2"/>
</w:r>
它重复使用了前面运行的rPr
。我如何确保此 footnoteReference-运行 具有正确的样式?
如果您在 Word 中创建示例文档,您可以使用 docx4j webapp 或 Helper 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");
您还需要在样式部分定义 FootnoteReference 样式。
我用 docx4j 编写了一个生成器,它将专有数据模型作为输入并生成一个 docx 文件作为输出。
我尝试添加脚注(和脚注引用),按照此处的示例:https://github.com/plutext/docx4j/blob/master/src/samples/docx4j/org/docx4j/samples/FootnoteAdd.java
但是,我看不出如何向代表 footnoteReference 的 运行 添加样式。我完全按照示例中的方式创建它:
CTFtnEdnRef ftnednref = wmlObjectFactory.createCTFtnEdnRef();
JAXBElement<org.docx4j.wml.CTFtnEdnRef> ftnednrefWrapped = wmlObjectFactory.createRFootnoteReference(ftnednref);
r.getContent().add( ftnednrefWrapped);
ftnednref.setId( BigInteger.valueOf( i) );
如何向 ftnednref
添加样式信息?最终,这个 "run" 在我的结果中是一个普通的 运行,但它没有 RStyle FootnoteReference
,这意味着它在我的文档中不在上标中。我认为应该自动应用这种样式,但事实并非如此。我的结果如下所示:
<w:r>
<w:rPr>
<w:highlight w:val="darkCyan"/>
</w:rPr>
<w:footnoteReference w:id="2"/>
</w:r>
它重复使用了前面运行的rPr
。我如何确保此 footnoteReference-运行 具有正确的样式?
如果您在 Word 中创建示例文档,您可以使用 docx4j webapp 或 Helper 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");
您还需要在样式部分定义 FootnoteReference 样式。