public static void delPageBreak(String fileName) { try { // 读取 Word 文档 FileInputStream fis = new FileInputStream(fileName); XWPFDocument document = new XWPFDocument(fis); fis.close(); IOUtils.setByteArrayMaxOverride(1000000000); removeSectionBreaks(document.getParagraphs()); // 在每个删除分节符的地方插入一个新的段落,设置其分页属性 //insertPageBreaks(document.getParagraphs()); // 保存修改后的 Word 文档 FileOutputStream fos = new FileOutputStream(fileName); document.write(fos); fos.close(); log.info("分节符已删除并保存成功。"); } catch (Exception e) { e.printStackTrace(); } } private static void removeSectionBreaks(List<XWPFParagraph> paragraphs) { for (XWPFParagraph paragraph : paragraphs) { if (hasSectionBreak(paragraph)) { // 移除段落中的分节符 paragraph.getCTP().getPPr().unsetSectPr(); XWPFRun run = paragraph.createRun(); run.addBreak(BreakType.PAGE); // 分页符 } } }
private static boolean hasSectionBreak(XWPFParagraph paragraph) { // 检查段落属性是否包含分节符 return paragraph.getCTP().getPPr() != null && paragraph.getCTP().getPPr().getSectPr() != null; }
如需要再添加分页符,方法如下:
private static void insertPageBreaks(List<XWPFParagraph> paragraphs) { for (int i = 0; i < paragraphs.size() - 1; i++) { XWPFParagraph currentParagraph = paragraphs.get(i); XWPFParagraph nextParagraph = paragraphs.get(i + 1); if (!hasSectionBreak(currentParagraph) && !hasSectionBreak(nextParagraph)) { // 在两个没有分节符的段落之间插入分页符 XWPFRun run = currentParagraph.createRun(); run.addCarriageReturn(); // 换行 run.addCarriageReturn(); // 换行 run.addBreak(BreakType.PAGE); // 分页符 } } }