itextpdf计算table高度,判断PDF剩余高度实现换页添加
在写PDF的时候你可能会遇到这种场景:
需要添加的table为一个整体,不能被拆分在两个PDF页中展示
这时候就需要先判断剩余的空白高度能否放下table的高度,否则换页添加
已使用高度计算:
public static float currentHeight(PdfWriter writer) throws ReflectiveOperationException{Method getPdfDocument = writer.getClass().getDeclaredMethod("getPdfDocument");getPdfDocument.setAccessible(true);PdfDocument pdfD = (PdfDocument) getPdfDocument.invoke(writer);Field getHeight = pdfD.getClass().getDeclaredField("currentHeight");getHeight.setAccessible(true);return (float)getHeight.get(pdfD);}
剩余高度计算:
纸张大小 - 上下边距:代码如下
document.getPageSize().getHeight() - document.bottomMargin() - document.topMargin();
剩余高度 = 纸张大小 - 上下边距 - 已使用高度
计算table高度
经过测试我发现没有被添加到document对象中的table计算的高度就一直是0,但是我必须计算出来table高度后我才能确定当前页的剩余高度能不能添加
实在没招了于是我想到了一个笨方法,(经测有效)
重新创建一个document对象计算出来后再将其销毁
public float calculatePdfTableHeights(PdfPTable pdfPTable) throws DocumentException, IOException {Document document = new Document(PageSize.A4, 60, 60, 30, 40);ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();PdfWriter writer = PdfWriter.getInstance(document, byteArrayOutputStream);document.open();document.add(pdfPTable);float hight = pdfPTable.calculateHeights();document.close();byteArrayOutputStream.close();writer.close();return hight;}
于是table高度计算出来了,剩余高度也计算出来了,就可以判断是否需要换页
document.newPage();
itextpdf计算table高度,判断PDF剩余高度实现换页添加相关推荐
- 如何将div高度填满剩余高度
下列代码中navbar高度为30px,content高度需要填满浏览器的剩余高度 <div id="body"> <div id="navbar&quo ...
- scroll-view如何自适应页面剩余高度
在uni-app使用中,有如下场景,页面有三个组件,top-bar顶部标题栏高度指定,bottom-bar底部功能菜单栏高度指定,scroll-view区域是一个scroll-view滚动区域,浏览聊 ...
- uniapp 填充剩余高度
前言 Hbuilder X 2.7.14.20200618 (不清楚uniapp的版本,用工具版本代替) 需求,如下图: 尝试 Flex 布局的flex-grow属性 flex-grow属性定义项目的 ...
- 微信小程序 页面除去头部和底部,中间高度铺满剩余部分的解决方案
做这么一个界面,让中间紫色和橙色部分的内容铺满在中间位置,并且让橙色部分位置固定不动,紫色部分内容超出时滚动,如图: 首先如何做到呢? 我使用了定位position:fiexed;让它撑满(关键代码) ...
- python opencv-4.1.0 cv2.getTextSize()函数 (计算文本字符串的宽度和高度)
def getTextSize(text, fontFace, fontScale, thickness): # real signature unknown; restored from __doc ...
- 一个div分上下两部分,上部分高度不固定,下面部分自动填满剩余高度
div自动填满剩余高度 html <div class="wrapper" style="height:800px;"><div class= ...
- 根据时间、所在地计算给定深空天体的方位角和高度;制定深空天体观测计划
1.根据时间.所在地计算给定深空天体的方位角和高度 DSOAZ(ra,dec,mydate) ra: 天体时角/度 J2000 dec:天体赤纬/度 J2000 mydate格式:"2020 ...
- 背景平铺两栏自适应(占满剩余高度)fastclick、IScroll双飞翼布局
文章目录 背景平铺 两栏自适应(占满剩余高度) 需求 实现 fastclick插件的使用 IScroll插件的使用(实现区域滚动效果) 条件 双飞翼布局(两边固定宽度,中间自适应) 条件 实现 背景平 ...
- python画位势高度图_位势高度计算中气压-高度公式的简化及其误差
位势高度计算中气压高度公式的简化及其误差 崔喜爱 1 顾浩 2 曹云昌 1 [摘 要] 摘要:对高空气象学领域而言 , 位势高度是重要的一个参量,为天气学 和气候学业务应用所提供的高度一般是位势高度. ...
最新文章
- [sinatra] Just Do It: Learn Sinatra, Part One Darren Jones
- map根据value值排序_凯哥带你从零学大数据系列之Java篇---第十九章:集合(Map+Collections)...
- IE6下png图片透明代码
- php怎么解析xml,使用PHP快速解析复杂的XML文件
- 絮语之一:悲悯·海·《垂死的肉身》
- OpenDrive记录
- AI(artificial intelligence)的学习
- [转载] Python水平自测!100道经典练习题.pdf(附答案)
- MySQL分页查询优化
- 2021-07-10树莓派PWM控制三极管(S8050)实现风扇调速
- YOLOv3源码解析1-代码整体结构
- 人工智能现状和发展趋势
- 原创科幻短篇《高考》
- 手把手带你实现 Docker 部署 Redis 集群
- 大数据分析数据来源的有哪些类型
- vue移动端用什么数据可视化插件_vue框架大屏可视化
- 深度学习之图像分类(九)--ResNeXt 网络结构
- 授权服务是如何颁发授权码和访问令牌的?
- 中创教育提示:教育机构主动退费?警惕落入退费诈骗陷阱!
- 漫游容器世界 - k8s安装篇