Reportlab 表格样式问题
Reportlab 表格样式问题
Reportlab PDF是一款用来生成PDF的插件,性能及高,功能强大(商业互吹一波!)。支持多种语言,还支持前端HTML+CSS实现,我使用Python实现的。先给大家看一下我做的生产PDF效果图:
整个PDF我只使用了一个表格,但是表格有些列在合并单元格之后,多行文本使用相同段落样式(ParagraphStyle),为了实现文本居中,触发表格样式神奇内部bug,IndexError: list index out of range,苦不堪言。
- 找出线索:参考官方文档reportlab-userguide.pdf,合并的单元格,必须是空字符串,否则会报错,之前添加过空行,直接加空列表,现在换成空字符串。文档说明:
- 狂调行高:后来原面料,BOM备注文本太多,行高设置了固定高度,因为客户说需要一页打印(数据多了,天方夜谭),我把以前行高自适应改成固定高度,因为ReportLab不支持自适应样式(None)和固定样式混合使用(这个希望官方以后支持一波),客户那边总有PDF出错,无法预览,很蓝瘦,香菇,然后拼命将物料数据这些行的行高调的越来越大,暂时解决问题(埋了雷,主要是内部插件报错,我也没找到好办法,无奈)。
- 重构大法:客户的尺码越来越多,有时候一个款有十二个尺码,当时写死了14个单元格(愚蠢呀,以为可以),因为列不同,样式不同,只能重构代码,将一个表格切割成四个表格,款式表格、动态尺码表格、物料表格、装箱表格,分别组装数据,维护样式(这样维护成本降低了,哪块有问题,调哪里样式,不然全局样式,太多,看的头皮发麻,当初偷懒付出的惨痛代价)。然后尺码表格每列列宽根据尺码数量动态计算,解决问题,但是尺码过多,就十分难看,然后大费力气的给客户做了个excel导出,相同数据,使用了DataFrame,其实还好,数据之前就换成DataFrame花了大力气,这次重构数据已经支持了,调调样式就好,尺码过多建议客户用excel导出(Pandas 大法好),然后物料表格每行行高使用(None)自动推算样式,这个功能还是很nice的,行高随文本字数变多就自动增加,非常棒的。
- 水落石出:后来发现是官方的一个bug,解决方式要修改源码(github很强势),下面把修改源码方法揭晓一下:
文档地址:blockTableStyle used repeatedly plus td style causes index out of range in platypus
有的时候还是不能偷懒(墨菲定律),碰到使用插件错误要学会曲线救国,或者给官方提issue(但是时间太长,会被产品和客户砍死的)。
Reportlab 表格样式问题相关推荐
- 源码推荐:仿写映客直播 ,快速切换主题 ,星星评分控件,表格样式,可以横向移动的表格, 仿微信键盘-
仿写映客直播(上传者:五仁月饼) 工作之余写的,基于IJKPlayer播放,对内存做了处理.目前已完成直播列表和直播间的搭建,后续还会慢慢完善. 项目地址 publishImageAndVideoAn ...
- phpexcel_cell 获取表格样式_Java 操作Word表格——创建嵌套表格、添加/复制表格行或列、设置表格是否禁止跨页断行...
精品推荐 国内稀缺优秀Java全栈课程-Vue+SpringBoot通讯录系统全新发布! Docker快速手上视频教程(无废话版)[免费] 作者:E-iceblue https://www.cnblo ...
- 两两对应成排的 表格 样式
样式需求 这种就不能用原生的表格样式 和 组件的table 来写 只能用盒子去拼写 下面是我写的 html css 样式是行内式 有点 乱 <div *ngIf="item['COMP ...
- Delphi设置表格样式
//设置表格样式 wordDoc.Tables.Item(1).Borders.Item(Word.WdBorderType.wdBorderLeft).LineStyle = Word.WdLine ...
- 自动化办公之excel教程(3):数据编辑操作,表格的美化操作,应用表格样式和单元格样式,制作报销汇总单
一.数据编辑操作 1.填充数据 填充数据见上一节 自动化办公之EXCEL教程(2):各种数据的输入,自动填充数据,表格操作小技巧 2.查找和替换数据 第一步:开始选项卡里找到查找 或者Ctil+F 第 ...
- Web前端开发笔记——第三章 CSS语言 第四节 CSS列表、表格样式
目录 一.CSS列表样式 (一)设计列表项前标志类型 (二)设计列表项前标志位置 (三)设计列表项图片 (四)设计整体列表属性 二.CSS表格样式 (一)设计表格大小 (二)设计表格边框 (三)奇偶选 ...
- 修改表格字体颜色_word排版应用:如何创建文本样式和表格样式
样式,大家应该不陌生,在Word中是一个非常强大的功能,运用得好,可以节省很多时间和精力.但如果你不会用,关键时刻可以把你急哭了! 在前面的"Word样式,简单又实用!"和&quo ...
- pandas之表格样式
在juoyter notebook中直接通过df输出DataFrame时,显示的样式为表格样式,通过sytle可对表格的样式做一些定制,类似excel的条件格式. df = pd.DataFrame( ...
- php网页表格样式,HTML5制作表格样式
废话不多说了,具体代码如下所示: 表格 *{ margin: 0; padding: 0; } body{ font: italic 20px Georgia, serif; letter-spaci ...
- 一、bootstrap4基础(布局系统、栅格系统、显示与隐藏、对齐与排列、内容排版、代码与图文、表格样式、颜色和边框、工具类)
1.1 Bootstrap简单介绍 1.2 Bootstrap结构 1.3 Bootstrap安装和测试 1.4 布局系统 1.5 栅格系统 4.6 栅格等级 1.7 显示与隐藏 1.7 对齐与排列 ...
最新文章
- pip安装kolla-ansible时报错Cannot install ‘PyYAML‘的解决方法
- 不是开发者也能玩得high!科大讯飞1024开发者节,看AI如何改变你的生活
- 以下属于单例模式的优点的是_三、单例模式详解
- 斜度符号标注_机械图纸尺寸标注规则,第1次见,太直观太形象了!测量工程师可以拿去教绘图的了!...
- matlab 替换指定的元素
- swift - 使用系统app导航
- 怎样把MySQL的编码方式改为utf8?
- Android入门笔记07
- WIN10的永久杜比音效的安装(2021)
- 台式计算机时间不能同步,电脑时间同步不了怎么办
- java图形用户界面基础
- Linux下文件搜索、查找、查看命令
- c++链表——银行账户管理系统
- Spark Streaming背压机制
- 3D炫酷赛车游戏【附源码】设计实现
- Linux中硬盘smart故障,硬盘驱动器 – 此SMART自检是否表示驱动器出现故障?
- xp系统蓝屏代码7b_7b蓝屏,win7系统蓝屏7b如何修复
- 15年IT经验,如何从一无所有成为上市公司高层!
- 【使用C++开发MCU】02-IIC实例之读取温度
- PostgreSQL单列多行变一行一行变多行
热门文章
- 易语言列表框防止项目重复加入列表框
- Mybatis源码SqlSession源码分析
- 从ISSCC2021论文看未来技术发展趋势
- 【评价模型】熵权法和模糊评价模型
- js数组 reduce函数
- 基于麻雀搜索算法优化深度置信网络的分类方法(SSA-DBN)
- 回弹强度记录表填写_混凝土回弹强度记录表格
- linux 神舟z7,老船长带你神舟战神Z7使用进阶
- 《统计学》第八版贾俊平第九章分类数据分析知识点总结及课后习题答案
- NS 一张SD卡三系统(真实10.2,虚拟SX 11.0.1,虚拟大气层12.02),重启随意切换,免插线注入