gpt4 book ai didi

java - Docx4j 页脚未显示在 MS-Word 2016 中

转载 作者:行者123 更新时间:2023-12-02 10:22:54 27 4
gpt4 key购买 nike

我正在使用 Java 中的 DOCx4j 库创建一个 docx 文件。我创建的页脚在 Libra Office 中完美显示,但在 MS-Word 2016 中未显示。

页脚代码:

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

请帮我找出问题所在。

最佳答案

您的文档开头为:

<w:body>
<w:sectPr>
<w:headerReference w:type="default" r:id="rId4"/>
</w:sectPr>

并以以下内容结尾:

    <w:sectPr>
<w:footerReference w:type="default" r:id="rId5"/>

尝试将 w:headerReference 从开头的 sectPr(这没什么意义)移动到末尾的 sectPr。

但是根据 Word 2016,您发布的 docx 已损坏,因此它还有其他问题需要解决。

关于java - Docx4j 页脚未显示在 MS-Word 2016 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54195998/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com