iTextPDF 7如何创建可统一管控内部元素分页规则的容器?
iTextPDF 7 实现容器内部禁止分页拆分的方案
场景1:直接使用iText原生API构建内容
- 直接调用
Div元素的setKeepTogether(true)方法即可实现和HTMLpage-break-inside: avoid完全一致的效果,容器内所有元素会被视为一个整体,分页时如果当前页剩余空间不足以容纳整个容器,会自动将完整容器移到下一页展示。
代码示例:
import com.itextpdf.layout.element.Div; import com.itextpdf.layout.element.Paragraph; import com.itextpdf.layout.Document; // 创建禁止内部分页的容器 Div noBreakContainer = new Div(); noBreakContainer.setKeepTogether(true); // 核心配置,对应分页不拆分规则 // 往容器内添加任意子元素 noBreakContainer.add(new Paragraph("Row 1")); noBreakContainer.add(new Paragraph("Row 2")); // 将容器添加到文档即可 document.add(noBreakContainer);
场景2:使用html2pdf模块转换HTML内容
如果是通过HTML转PDF的方式生成文档,iText的html2pdf模块默认已经支持page-break-inside: avoidCSS属性,你给出的HTML代码不需要额外修改即可被正确解析,容器内内容不会被分页拆分。
注意:如果容器本身的总高度已经超过单页的可展示高度,
setKeepTogether(true)规则会自动失效,iText会对容器内容正常分页,避免内容溢出丢失。
内容的提问来源于stack exchange,提问作者TimB
相关产品推荐
相关产品推荐

