(>_<) 2025-02-08 16:35 采纳率: 100%
浏览 44
已结题

java 使用poi 设置word的页眉,无法正常显示

java 使用poi 设置word的页眉,设置了奇偶页眉不同。但是打开word后,偶数页眉设置没有正常显示,必须手动勾选“奇偶页不同”才能正常显示。

img

代码运行环境:java8
word用 wps、office 打开都不显示偶数页页眉
poi版本:

        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>5.4.0</version>
        </dependency>

代码:

import org.apache.poi.wp.usermodel.HeaderFooterType;
import org.apache.poi.xwpf.model.XWPFHeaderFooterPolicy;
import org.apache.poi.xwpf.usermodel.*;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTP;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTText;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

public class SimpleDocumentWithHeader {
         public static void main(String[] args) throws IOException {

        XWPFDocument doc = new XWPFDocument();
        XWPFParagraph p = doc.createParagraph();

        XWPFRun r = p.createRun();
        r.setFontSize(60);
        r.setText("测试");
        r.addBreak(BreakType.PAGE);
        r.setText("测试");
        r.addBreak(BreakType.PAGE);
        r.setText("测试");
        r.addBreak(BreakType.PAGE);
        r.setText("测试");
        r.addBreak(BreakType.PAGE);
        r.setText("测试");
        doc.createHeader(HeaderFooterType.DEFAULT).createParagraph().createRun().setText("default");
        doc.createHeader(HeaderFooterType.EVEN).createParagraph().createRun().setText("even");
        doc.createHeader(HeaderFooterType.FIRST).createParagraph().createRun().setText("first");
        try (OutputStream os = new FileOutputStream(new File("D:\\header.docx"))) {
            doc.write(os);
        }
    }
}
  • 写回答

5条回答 默认 最新

  • (>_<) 2025-02-14 09:41
    关注

    已解决:
    之前一直在查看XWPFHeader、XWPFFooter相关的配置,其实在XWPFHeaderXWPFDocument对象就有对应的控制属性
    // 设置文档的“奇偶页不同”属性
    doc.setEvenAndOddHeadings(true);

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 2月22日
  • 已采纳回答 2月14日
  • 创建了问题 2月8日