iText7表格单个单元格分页被拆分 如何保持在同一页显示
表格单元格跨页不拆分解决方案
仅设置单元格高度无法解决分页拆分问题,核心要开启「行不跨页拆分」配置,不同场景实现方式如下:
常用实现方案
iText 系列(PDF生成场景)
- 对目标单元格所在的行对象设置
setKeepTogether(true)属性,即可保证整行内容不会被分页切割 - 代码示例:
// iText7 代码示例 Table table = new Table(3); Row targetRow = new Row(); // 开启行不跨页拆分 targetRow.setKeepTogether(true); // 添加单元格、插入表格等后续操作
- 如果是短表格,也可以直接给表格对象设置
setKeepTogether(true),让整个表格都不会跨页拆分
Apache POI(Word操作场景)
- 给目标行添加
cantSplit属性即可禁止行内容跨页拆分 - 代码示例:
XWPFTable table = document.getTables().get(0); XWPFTableRow targetRow = table.getRow(rowIndex); // 禁止行跨页拆分 targetRow.getCtRow().addNewTrPr().addNewCantSplit().setVal(true);
Word手动操作场景
- 选中需要设置的整行,右键点击「表格属性」
- 切换到「行」标签页,取消勾选「允许跨页断行」,确认后生效
注意事项
- 行高会自动适配单元格内容高度,只要开启了不拆分属性,当前页剩余高度不够容纳整行时,会自动将整行挪到下一页展示
- 如果单个单元格内容高度超过单页可排版的最大高度,还是会出现拆分,这种情况需要手动拆分单元格内容到多个行,避免单个内容块过长
内容的提问来源于stack exchange,提问作者Heitor Badotti
相关产品推荐
相关产品推荐

