以编程方式设置脚注引用运行的样式



我用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。如何确保此脚注引用运行具有正确的样式?

如果在 Word

中创建示例文档,则可以使用 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");

您还需要在样式部分中定义脚注引用样式。

相关内容

  • 没有找到相关文章

最新更新