Reputation: 695
I am creating a docx file using DOCx4j Library in Java. I have created the Footer which is showing perfectly in Libra Office but it is not showing in MS-Word 2016.
Footer Code:
public static Relationship createFooterPageNumPart(
WordprocessingMLPackage wordprocessingMLPackage) throws Exception {
FooterPart footerPart = new FooterPart();
MainDocumentPart t = wordprocessingMLPackage.getMainDocumentPart();
footerPart.setPackage(wordprocessingMLPackage);
// footerPart.setJaxbElement(createFooterWithPageNr());
footerPart.setJaxbElement(createFooterWithPageNr(wordprocessingMLPackage,footerPart));
return t.addTargetPart(footerPart);
}
public static Ftr createFooterWithPageNr(WordprocessingMLPackage wordprocessingMLPackage, Part sourcePart) throws Exception {
Ftr ftr = objectFactory.createFtr();
P paragraph = objectFactory.createP();
RPr fontRPr = getRPr(objectFactory, "Frutiger LT Arabic 45 Light", "000000", "20", STHint.EAST_ASIA,
false, false, false, false);
R run = objectFactory.createR();
run.setRPr(fontRPr);
paragraph.getContent().add(run);
setParagraphAlign(objectFactory, paragraph, JcEnumeration.RIGHT);
ftr.getContent().add(paragraph);
return ftr;
}
public static void createFooterReference(
WordprocessingMLPackage wordprocessingMLPackage,
Relationship relationship)
throws InvalidFormatException {
List<SectionWrapper> sections = wordprocessingMLPackage
.getDocumentModel().getSections();
SectPr sectPr = sections.get(sections.size() - 1).getSectPr();
// There is always a section wrapper, but it might not contain a sectPr
if (sectPr == null) {
sectPr = objectFactory.createSectPr();
wordprocessingMLPackage.getMainDocumentPart().addObject(sectPr);
sections.get(sections.size() - 1).setSectPr(sectPr);
}
FooterReference footerReference = objectFactory.createFooterReference();
footerReference.setId(relationship.getId());
footerReference.setType(HdrFtrRef.DEFAULT);
sectPr.getEGHdrFtrReferences().add(footerReference);
}
Please help me out in finding where it is going wrong.
Upvotes: 0
Views: 373
Reputation: 15878
Your docx starts with:
<w:body>
<w:sectPr>
<w:headerReference w:type="default" r:id="rId4"/>
</w:sectPr>
and ends with:
<w:sectPr>
<w:footerReference w:type="default" r:id="rId5"/>
Try moving w:headerReference from the sectPr at the beginning (which makes little sense) to the one at the end.
But according to Word 2016, the docx you posted is broken, so it has other issues which need to be addressed.
Upvotes: 1