Reportlab 表格样式问题

Reportlab PDF是一款用来生成PDF的插件,性能及高,功能强大(商业互吹一波!)。支持多种语言,还支持前端HTML+CSS实现,我使用Python实现的。先给大家看一下我做的生产PDF效果图:

整个PDF我只使用了一个表格,但是表格有些列在合并单元格之后,多行文本使用相同段落样式(ParagraphStyle),为了实现文本居中,触发表格样式神奇内部bug,IndexError: list index out of range,苦不堪言。

  1. 找出线索:参考官方文档reportlab-userguide.pdf,合并的单元格,必须是空字符串,否则会报错,之前添加过空行,直接加空列表,现在换成空字符串。文档说明:
  2. 狂调行高:后来原面料,BOM备注文本太多,行高设置了固定高度,因为客户说需要一页打印(数据多了,天方夜谭),我把以前行高自适应改成固定高度,因为ReportLab不支持自适应样式(None)和固定样式混合使用(这个希望官方以后支持一波),客户那边总有PDF出错,无法预览,很蓝瘦,香菇,然后拼命将物料数据这些行的行高调的越来越大,暂时解决问题(埋了雷,主要是内部插件报错,我也没找到好办法,无奈)。
  3. 重构大法:客户的尺码越来越多,有时候一个款有十二个尺码,当时写死了14个单元格(愚蠢呀,以为可以),因为列不同,样式不同,只能重构代码,将一个表格切割成四个表格,款式表格、动态尺码表格、物料表格、装箱表格,分别组装数据,维护样式(这样维护成本降低了,哪块有问题,调哪里样式,不然全局样式,太多,看的头皮发麻,当初偷懒付出的惨痛代价)。然后尺码表格每列列宽根据尺码数量动态计算,解决问题,但是尺码过多,就十分难看,然后大费力气的给客户做了个excel导出,相同数据,使用了DataFrame,其实还好,数据之前就换成DataFrame花了大力气,这次重构数据已经支持了,调调样式就好,尺码过多建议客户用excel导出(Pandas 大法好),然后物料表格每行行高使用(None)自动推算样式,这个功能还是很nice的,行高随文本字数变多就自动增加,非常棒的。
  4. 水落石出:后来发现是官方的一个bug,解决方式要修改源码(github很强势),下面把修改源码方法揭晓一下:

    文档地址:blockTableStyle used repeatedly plus td style causes index out of range in platypus
    有的时候还是不能偷懒(墨菲定律),碰到使用插件错误要学会曲线救国,或者给官方提issue(但是时间太长,会被产品和客户砍死的)。

Reportlab 表格样式问题相关推荐

  1. 源码推荐:仿写映客直播 ,快速切换主题 ,星星评分控件,表格样式,可以横向移动的表格, 仿微信键盘-

    仿写映客直播(上传者:五仁月饼) 工作之余写的,基于IJKPlayer播放,对内存做了处理.目前已完成直播列表和直播间的搭建,后续还会慢慢完善. 项目地址 publishImageAndVideoAn ...

  2. phpexcel_cell 获取表格样式_Java 操作Word表格——创建嵌套表格、添加/复制表格行或列、设置表格是否禁止跨页断行...

    精品推荐 国内稀缺优秀Java全栈课程-Vue+SpringBoot通讯录系统全新发布! Docker快速手上视频教程(无废话版)[免费] 作者:E-iceblue https://www.cnblo ...

  3. 两两对应成排的 表格 样式

    样式需求 这种就不能用原生的表格样式 和 组件的table 来写 只能用盒子去拼写 下面是我写的 html css 样式是行内式 有点 乱 <div *ngIf="item['COMP ...

  4. Delphi设置表格样式

    //设置表格样式 wordDoc.Tables.Item(1).Borders.Item(Word.WdBorderType.wdBorderLeft).LineStyle = Word.WdLine ...

  5. 自动化办公之excel教程(3):数据编辑操作,表格的美化操作,应用表格样式和单元格样式,制作报销汇总单

    一.数据编辑操作 1.填充数据 填充数据见上一节 自动化办公之EXCEL教程(2):各种数据的输入,自动填充数据,表格操作小技巧 2.查找和替换数据 第一步:开始选项卡里找到查找 或者Ctil+F 第 ...

  6. Web前端开发笔记——第三章 CSS语言 第四节 CSS列表、表格样式

    目录 一.CSS列表样式 (一)设计列表项前标志类型 (二)设计列表项前标志位置 (三)设计列表项图片 (四)设计整体列表属性 二.CSS表格样式 (一)设计表格大小 (二)设计表格边框 (三)奇偶选 ...

  7. 修改表格字体颜色_word排版应用:如何创建文本样式和表格样式

    样式,大家应该不陌生,在Word中是一个非常强大的功能,运用得好,可以节省很多时间和精力.但如果你不会用,关键时刻可以把你急哭了! 在前面的"Word样式,简单又实用!"和&quo ...

  8. pandas之表格样式

    在juoyter notebook中直接通过df输出DataFrame时,显示的样式为表格样式,通过sytle可对表格的样式做一些定制,类似excel的条件格式. df = pd.DataFrame( ...

  9. php网页表格样式,HTML5制作表格样式

    废话不多说了,具体代码如下所示: 表格 *{ margin: 0; padding: 0; } body{ font: italic 20px Georgia, serif; letter-spaci ...

  10. 一、bootstrap4基础(布局系统、栅格系统、显示与隐藏、对齐与排列、内容排版、代码与图文、表格样式、颜色和边框、工具类)

    1.1 Bootstrap简单介绍 1.2 Bootstrap结构 1.3 Bootstrap安装和测试 1.4 布局系统 1.5 栅格系统 4.6 栅格等级 1.7 显示与隐藏 1.7 对齐与排列 ...

最新文章

  1. pip安装kolla-ansible时报错Cannot install ‘PyYAML‘的解决方法
  2. 不是开发者也能玩得high!科大讯飞1024开发者节,看AI如何改变你的生活
  3. 以下属于单例模式的优点的是_三、单例模式详解
  4. 斜度符号标注_机械图纸尺寸标注规则,第1次见,太直观太形象了!测量工程师可以拿去教绘图的了!...
  5. matlab 替换指定的元素
  6. swift - 使用系统app导航
  7. 怎样把MySQL的编码方式改为utf8?
  8. Android入门笔记07
  9. WIN10的永久杜比音效的安装(2021)
  10. 台式计算机时间不能同步,电脑时间同步不了怎么办
  11. java图形用户界面基础
  12. Linux下文件搜索、查找、查看命令
  13. c++链表——银行账户管理系统
  14. Spark Streaming背压机制
  15. 3D炫酷赛车游戏【附源码】设计实现
  16. Linux中硬盘smart故障,硬盘驱动器 – 此SMART自检是否表示驱动器出现故障?
  17. xp系统蓝屏代码7b_7b蓝屏,win7系统蓝屏7b如何修复
  18. 15年IT经验,如何从一无所有成为上市公司高层!
  19. 【使用C++开发MCU】02-IIC实例之读取温度
  20. PostgreSQL单列多行变一行一行变多行

热门文章

  1. 易语言列表框防止项目重复加入列表框
  2. Mybatis源码SqlSession源码分析
  3. 从ISSCC2021论文看未来技术发展趋势
  4. 【评价模型】熵权法和模糊评价模型
  5. js数组 reduce函数
  6. 基于麻雀搜索算法优化深度置信网络的分类方法(SSA-DBN)
  7. 回弹强度记录表填写_混凝土回弹强度记录表格
  8. linux 神舟z7,老船长带你神舟战神Z7使用进阶
  9. 《统计学》第八版贾俊平第九章分类数据分析知识点总结及课后习题答案
  10. NS 一张SD卡三系统(真实10.2,虚拟SX 11.0.1,虚拟大气层12.02),重启随意切换,免插线注入