在写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剩余高度实现换页添加相关推荐

  1. 如何将div高度填满剩余高度

    下列代码中navbar高度为30px,content高度需要填满浏览器的剩余高度 <div id="body"> <div id="navbar&quo ...

  2. scroll-view如何自适应页面剩余高度

    在uni-app使用中,有如下场景,页面有三个组件,top-bar顶部标题栏高度指定,bottom-bar底部功能菜单栏高度指定,scroll-view区域是一个scroll-view滚动区域,浏览聊 ...

  3. uniapp 填充剩余高度

    前言 Hbuilder X 2.7.14.20200618 (不清楚uniapp的版本,用工具版本代替) 需求,如下图: 尝试 Flex 布局的flex-grow属性 flex-grow属性定义项目的 ...

  4. 微信小程序 页面除去头部和底部,中间高度铺满剩余部分的解决方案

    做这么一个界面,让中间紫色和橙色部分的内容铺满在中间位置,并且让橙色部分位置固定不动,紫色部分内容超出时滚动,如图: 首先如何做到呢? 我使用了定位position:fiexed;让它撑满(关键代码) ...

  5. python opencv-4.1.0 cv2.getTextSize()函数 (计算文本字符串的宽度和高度)

    def getTextSize(text, fontFace, fontScale, thickness): # real signature unknown; restored from __doc ...

  6. 一个div分上下两部分,上部分高度不固定,下面部分自动填满剩余高度

    div自动填满剩余高度 html <div class="wrapper" style="height:800px;"><div class= ...

  7. 根据时间、所在地计算给定深空天体的方位角和高度;制定深空天体观测计划

    1.根据时间.所在地计算给定深空天体的方位角和高度 DSOAZ(ra,dec,mydate) ra: 天体时角/度 J2000 dec:天体赤纬/度 J2000 mydate格式:"2020 ...

  8. 背景平铺两栏自适应(占满剩余高度)fastclick、IScroll双飞翼布局

    文章目录 背景平铺 两栏自适应(占满剩余高度) 需求 实现 fastclick插件的使用 IScroll插件的使用(实现区域滚动效果) 条件 双飞翼布局(两边固定宽度,中间自适应) 条件 实现 背景平 ...

  9. python画位势高度图_位势高度计算中气压-高度公式的简化及其误差

    位势高度计算中气压高度公式的简化及其误差 崔喜爱 1 顾浩 2 曹云昌 1 [摘 要] 摘要:对高空气象学领域而言 , 位势高度是重要的一个参量,为天气学 和气候学业务应用所提供的高度一般是位势高度. ...

最新文章

  1. [sinatra] Just Do It: Learn Sinatra, Part One Darren Jones
  2. map根据value值排序_凯哥带你从零学大数据系列之Java篇---第十九章:集合(Map+Collections)...
  3. IE6下png图片透明代码
  4. php怎么解析xml,使用PHP快速解析复杂的XML文件
  5. 絮语之一:悲悯·海·《垂死的肉身》
  6. OpenDrive记录
  7. AI(artificial intelligence)的学习
  8. [转载] Python水平自测!100道经典练习题.pdf(附答案)
  9. MySQL分页查询优化
  10. 2021-07-10树莓派PWM控制三极管(S8050)实现风扇调速
  11. YOLOv3源码解析1-代码整体结构
  12. 人工智能现状和发展趋势
  13. 原创科幻短篇《高考》
  14. 手把手带你实现 Docker 部署 Redis 集群
  15. 大数据分析数据来源的有哪些类型
  16. vue移动端用什么数据可视化插件_vue框架大屏可视化
  17. 深度学习之图像分类(九)--ResNeXt 网络结构
  18. 授权服务是如何颁发授权码和访问令牌的?
  19. 中创教育提示:教育机构主动退费?警惕落入退费诈骗陷阱!
  20. 漫游容器世界 - k8s安装篇

热门文章

  1. 如何在 JavaScript 中的字符串的字符之间添加空格
  2. Python爬虫 | 批量爬取今日头条街拍美图
  3. uniapp 微信小程序长按识别二维码,跳转小程序、个人微信
  4. 计算全国组织机构代码的校验码(C++)
  5. 正基WiFi模块AP6181系列设计指南
  6. 船载雷达天线滑环的使用
  7. 什么是显函数,什么是隐函数
  8. Yuga Labs的猿猴元宇宙野心:迈向Web3一代的漫威宇宙 |链捕手
  9. Guns5.1版本多数据源配置问题
  10. html如何设置自动点击,按键精灵怎么设置自动点击