Search in sources :

Example 1 with FootnoteRef

use of org.docx4j.wml.R.FootnoteRef in project flexmark-java by vsch.

the class DocxContextImpl method addFootnote.

@Override
public CTFtnEdn addFootnote(final BigInteger footnoteID) throws Docx4JException {
    // Add the note number in the run
    CTFtnEdnRef ftnednref = myFactory.createCTFtnEdnRef();
    JAXBElement<CTFtnEdnRef> ftnednrefWrapped = myFactory.createRFootnoteReference(ftnednref);
    R ftnR = myFactory.createR();
    getP().getContent().add(ftnR);
    ftnR.getContent().add(ftnednrefWrapped);
    RPr ftnRPr = myFactory.createRPr();
    ftnR.setRPr(ftnRPr);
    RStyle ftnRStyle = myFactory.createRStyle();
    ftnRPr.setRStyle(ftnRStyle);
    ftnRStyle.setVal(myRendererOptions.FOOTNOTE_ANCHOR_STYLE);
    // see if we need to create a new footnote id or can re-use existing one
    final boolean haveID = footnoteID.compareTo(BigInteger.ZERO) > 0;
    BigInteger i = haveID ? footnoteID : BigInteger.valueOf(myFootnoteRef++);
    ftnednref.setId(i);
    if (haveID) {
        for (CTFtnEdn ftnEdn : getFootnotesPart().getContents().getFootnote()) {
            if (ftnEdn.getId().compareTo(footnoteID) == 0) {
                return ftnEdn;
            }
        }
    }
    // Create a footnote in the footnotesPart
    // @formatter:off
    // String openXML = "<w:footnote w:id=\"" + i + "\" xmlns:w=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\" xmlns:xml=\"http://www.w3.org/XML/1998/namespace\">"
    // + "<w:p>"
    // + "<w:pPr>"
    // + "<w:pStyle w:val=\"Footnote\"/>"
    // //+ "<w:rPr>"
    // //    + "<w:lang w:val=\"en-AU\"/>"
    // //+"</w:rPr>"
    // +"</w:pPr>"
    // + "<w:r>"
    // + "<w:rPr>"
    // + "<w:rStyle w:val=\"FootnoteAnchor\"/>"
    // +"</w:rPr>"
    // + "<w:footnoteRef/>"
    // +"</w:r>"
    // + "<w:r>"
    // + "<w:t xml:space=\"preserve\"> </w:t>"
    // +"</w:r>"
    // + "<w:r>"
    // //+ "<w:rPr>"
    // //    + "<w:lang w:val=\"en-AU\"/>"
    // //+"</w:rPr>"
    // + "<w:t>" + text +"</w:t>"
    // +"</w:r>"
    // +"</w:p>"
    // +"</w:footnote>";
    // // @formatter:on
    // CTFtnEdn ftnedn = (CTFtnEdn) XmlUtils.unmarshalString(openXML, Context.jc, CTFtnEdn.class);
    CTFtnEdn ftnEdn = myFactory.createCTFtnEdn();
    ftnEdn.setId(i);
    P p = myFactory.createP();
    ftnEdn.getContent().add(p);
    PPr pPr = myFactory.createPPr();
    p.setPPr(pPr);
    PStyle pStyle = myFactory.createPPrBasePStyle();
    pPr.setPStyle(pStyle);
    pStyle.setVal(myRendererOptions.FOOTNOTE_STYLE);
    R r1 = myFactory.createR();
    p.getContent().add(r1);
    RPr rPr = myFactory.createRPr();
    r1.setRPr(rPr);
    RStyle rStyle = myFactory.createRStyle();
    rPr.setRStyle(rStyle);
    rStyle.setVal(myRendererOptions.FOOTNOTE_ANCHOR_STYLE);
    final FootnoteRef footnoteRef = myFactory.createRFootnoteRef();
    r1.getContent().add(footnoteRef);
    R r2 = myFactory.createR();
    Text text1 = myFactory.createText();
    JAXBElement<Text> textWrapped = myFactory.createRT(text1);
    r2.getContent().add(textWrapped);
    text1.setSpace(RunFormatProvider.SPACE_PRESERVE);
    text1.setValue("\t");
    p.getContent().add(r2);
    getFootnotesPart().getContents().getFootnote().add(ftnEdn);
    return ftnEdn;
}
Also used : PStyle(org.docx4j.wml.PPrBase.PStyle) FootnoteRef(org.docx4j.wml.R.FootnoteRef) BigInteger(java.math.BigInteger)

Aggregations

BigInteger (java.math.BigInteger)1 PStyle (org.docx4j.wml.PPrBase.PStyle)1 FootnoteRef (org.docx4j.wml.R.FootnoteRef)1