当前位置: 首页 > news >正文

poi java 删除word的空白页

开发的时候遇到的问题,特此记录一下
使用Apache POI(Java库)删除Word文档中的空白页时,需针对不同场景处理。以下是具体实现方法和代码示例:

  1. 基础删除(段落/分页符)‌

通过删除多余段落标记或分页符实现:
XWPFDocument doc = new XWPFDocument(new FileInputStream(“input.docx”));
List paragraphs = doc.getParagraphs();
for (XWPFParagraph para : paragraphs) {
if (para.getText().trim().isEmpty()) {
doc.removeBodyElement(doc.getPosOfParagraph(para));
}
}
FileOutputStream out = new FileOutputStream(“output.docx”);
doc.write(out);

适用于简单空白页(由空段落引起)‌

  1. 处理分节符/分页符‌

显式删除分节符或分页符:
for (XWPFSection sect : doc.getSections()) {
if (sect.getParagraphs().isEmpty()) {
doc.removeBodyElement(doc.getPosOfSection(sect));
}
}

需结合CTP和CTSectPr处理XML底层标签‌

  1. 表格后的空白页‌

调整段落行距以隐藏不可删的标记:
XWPFParagraph lastPara = doc.getLastParagraph();
if (lastPara != null) {
lastPara.setSpacingBetween(1, LineSpacingRule.EXACT);
}
解决表格末尾自动生成的段落标记导致的空白页‌

  1. 批量替换(高级)‌

使用正则替换删除隐藏符号:

Pattern pattern = Pattern.compile(“(\f|\b\s{2,}\b)”);
for (XWPFParagraph para : paragraphs) {
String text = para.getText();
text = pattern.matcher(text).replaceAll(“”);
para.replaceText(text);
}
处理分页符(\f)和连续空格‌

注意事项‌
有些方法会把插入的图片也会当空白页一起清掉,注意多测试!

http://www.dtcms.com/a/263947.html

相关文章:

  • 【docker】docker save和docker load
  • 通达信【极弱强势指标与股道波段交易系统】幅图
  • Gin 中间件详解与实践
  • 发布/订阅模式:解耦系统的强大设计模式
  • Python Flask 容器化应用链路可观测
  • 基于SSM万华城市货运服务系统的设计与实现
  • 开源模型与商用模型协同开发机制设计
  • Vue基础(19)_Vue内置指令
  • Qt_Creator入门基础知识
  • 基于.Net的Web API 控制器及方法相关注解属性
  • Qt/C++运行报错:exited with code -1073741819
  • scp (Secure Copy Protocol)指令集
  • 向量数据库全面解析:原理、功能与主流产品对比
  • 学习笔记(C++篇)—— Day 9
  • Terraform Helm:微服务基础设施即代码
  • Kubernetes Pod 调度基础
  • 飞算JavaAI:重构软件开发范式的智能引擎
  • 【SQL知识】PDO 和 MySQLi 的区别
  • python __doc__
  • gateway白名单存储nacos,改成存储数据库
  • leetcode124-二叉树中的最大路径和
  • CPU缓存一致性
  • AI智能体在用户行为数据分析中有哪些应用?
  • 具身多模态大模型在感知与交互方面的综述
  • (十一)Spring WebSocket
  • Ansys Speos | Speos Camera 传感器机器视觉示例
  • vue-35(使用 Jest 和 Vue Test Utils 设置测试环境)
  • 列表元素滚动动画
  • LAN8720 寄存器概览和STM32 HAL库读写测试
  • CSS 安装使用教程