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;
}
Aggregations