python+fpdf:创建pdf并实现表格数据写入

embedded/2025/1/12 15:37:35/

目录

pdf%E6%96%87%E4%BB%B6%E5%AF%B9%E8%B1%A1-toc" style="margin-left:80px;">创建pdf文件对象

新增页

添加自定义字体

设置字体

设置文字颜色和背景色

插入内容

换行

插入图片

pdf-toc" style="margin-left:80px;">保存pdf

完整代码


安装:pip install fpdf

pdf%E6%96%87%E4%BB%B6%E5%AF%B9%E8%B1%A1">创建pdf文件对象

python">from fpdf import FPDF, Alignpdf = FPDF()  # 创建pdf文件对象

获取边距

python">print(pdf.l_margin, pdf.r_margin, pdf.t_margin, pdf.b_margin)  # 获取上下左右边距
print(pdf.w, pdf.h, pdf.eph, pdf.epw)  # 页面宽高、有效宽高(宽-左右边距,高-上下边距)

新增页

python">pdf.add_page()

添加自定义字体

python">pdf.add_font('myfont',fname=r'C:\Users\DELL\AppData\Local\JianyingPro\User Data\Cache\effect\9182767\56dfcfca94158a7a92263aa5b41f8a84-preview\Aa以梦为马.ttf')

设置字体

style参数:(str):空字符串(默认情况下),或组合由B(粗体)、I(斜体)和U(下划线)中的一个或几个字母组成。粗体和斜体样式不适用于Symbol和ZapfDingbats字体。

python">pdf.set_font('Times', style='BIU', size=20)

设置文字颜色和背景色

python">        pdf.set_text_color(0, 0, 0)bg = pdf.set_fill_color(255, 255, 255)

插入内容

主要参数说明:

w,h:设置单元格宽高。

fill:默认为False,为TRUE是对设置的背景填充才生效。

align:文字对齐样式:继承Align对象属性,可写成align=Align.C或align='C'。

border:默认为0不显示边框,为1或整数时显示边框。

python">pdf.cell(w=pdf.epw, h=pdf.t_margin, text='劝君更尽一杯酒,西出阳关无故人。', align=Align.C, fill=True) 

换行

ln表示换行,参数为高度,默认情况下,该值等于最后打印文本行的高度(除非由‘ .text() ’写入)。如果还没有写文本文档,则使用当前字体高度。

python">pdf.ln(10) 

插入图片

参数:图片名、插入位置,图片大小

python">pdf.image(image_path, x=10, y=50, w=30, h=30)

pdf">保存pdf

python">pdf.output(rf'E:\桌面\{int(time.time())}.pdf')

完整代码

python">image_path = r'E:\桌面\99\测试图片\12.jpg'
pdf = FPDF()  # 创建pdf文件对象pdf.add_page()
pdf.add_font('myfont',fname=r'C:\Users\DELL\AppData\Local\JianyingPro\User Data\Cache\effect\9182767\56dfcfca94158a7a92263aa5b41f8a84-preview\Aa以梦为马.ttf')# 写入一个标题
pdf.set_font('myfont', size=20)
pdf.cell(w=pdf.epw, h=pdf.t_margin, text='人员数据表', align=Align.C, fill=False)
pdf.ln(pdf.font_size*2)# 插入表数据
data = [['name', 'age', 'nation', 'occupation'], ['张三', '32', '汉', '无业'], ['宋东', '31', '汉', '农民']]
for h, rows in enumerate(data):if h == 0:pdf.set_font('Times', style='BIU', size=20)  # 自定义字体pdf.set_text_color(100, 255, 10)bg = pdf.set_fill_color(255, 255, 50)th = pdf.font_size * 2  # 行高可根据字体大小设置else:pdf.set_font('myfont', size=10)pdf.set_text_color(0, 0, 0)bg = pdf.set_fill_color(255, 255, 255)th = pdf.font_size * 2  # 行高可根据字体大小设置for r, cell_value in enumerate(rows):pdf.cell(pdf.epw / len(rows), th, text=str(cell_value), fill=True, align='C', border=1)pdf.ln(th)# 插入图片及导出文档
pdf.image(image_path, x=10, y=100, w=70, h=70)
pdf.output(rf'E:\桌面\99\12{int(time.time())}.pdf')

不会自动换行,可使用一下方法通过判断单元格宽度和字符长度将value换行后再插入(通过计算文字内容长度和字体大小关系,判断长度是否大于单元格宽度,获取需要换行的行数【行数使用math方法的向上取整获取】,然后使用下面方法分割换行重组字符串)

python">def split_string_with_step(s, step):return [s[i:i + step] for i in range(0, len(s), step)]


http://www.ppmy.cn/embedded/153313.html

相关文章

天天 AI-250110:今日热点-字节豆包Web端反超百度文心一言,DeepSeek也发力了|量子位智库月报

2AGI.NET:天天AI-20250109 人工智能(AI)和硬件技术继续以惊人的速度发展,不断刷新我们对技术边界的认知。从英伟达的RTX 50系列显卡到清华团队的数学推理突破,再到AI算力的多个利好,这些技术的发展正在推动…

element-ui Cannot read properties of undefined (reading ‘indexOf‘)

报错信息 element-ui 在使用Form 表单,在使用重置this.$refs[formName].resetFields();()时报错,是因为每个el-form-item标签需要prop这个属性,不添加就会报错

Unity学习笔记(六)使用状态机重构角色移动、跳跃、冲刺

前言 本文为Udemy课程The Ultimate Guide to Creating an RPG Game in Unity学习笔记 整体状态框架(简化) Player 是操作对象的类: 继承了 MonoBehaviour 用于定义游戏对象的行为,每个挂载在 Unity 游戏对象上的脚本都需要继承自 MonoBehaviour&#x…

halcon三维点云数据处理(七)find_shape_model_3d_recompute_score

目录 一、find_shape_model_3d_recompute_score例程代码二、set_object_model_3d_attrib_mod函数三、prepare_object_model_3d 函数四、create_cube_shape_model_3d函数五、获得CamPose六、project_cube_image函数七、find_shape_model_3d函数八、project_shape_model_3d函数 一…

5种IO模型

目录 一、认识IO二、5种IO模型三、非阻塞IO代码 一、认识IO 什么是IO? Input(输入)和Output(输出)。 冯诺依曼体系结构中,数据从输入设备拷贝到内存,经过处理后,再从内存拷贝到输出设备。现实情况中,数据并不是那么流…

sqlzoo答案2-SELECT from WORLD Tutorial

在sqlzoo练习sql:SELECT from WORLD Tutorial - SQLZoo namecontinentareapopulationgdpAfghanistanAsia6522302550010020343000000AlbaniaEurope28748283174112960000000AlgeriaAfrica238174137100000188681000000AndorraEurope468781153712000000AngolaAfrica124…

Decord - 深度学习视频加载器

文章目录 一、关于 Decord初步基准 二、安装1、通过pip安装2、从源代码安装2.1 Linux2.2 macOS2.3 Windows 三、用法1、VideoReader2、VideoLoader3、AudioReader4、AVReader 四、深度学习框架的桥梁: 一、关于 Decord 一款高效的深度学习视频加载器,具…

RK3568-rk809rtc休眠唤醒

参考链接 https://www.360doc.cn/article/71858349_1119199262.html修改驱动drivers/mfd/rk808.c static void rk817_shutdown_prepare(void) { int ret; …