当前位置: 首页 > news >正文

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

目录

创建pdf文件对象

新增页

添加自定义字体

设置字体

设置文字颜色和背景色

插入内容

换行

插入图片

保存pdf

完整代码


安装:pip install fpdf

创建pdf文件对象

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

获取边距

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

新增页

pdf.add_page()

添加自定义字体

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字体。

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

设置文字颜色和背景色

        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或整数时显示边框。

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

换行

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

pdf.ln(10) 

插入图片

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

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

保存pdf

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

完整代码

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方法的向上取整获取】,然后使用下面方法分割换行重组字符串)

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

相关文章:

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

目录 创建pdf文件对象 新增页 添加自定义字体 设置字体 设置文字颜色和背景色 插入内容 换行 插入图片 保存pdf 完整代码 安装:pip install fpdf 创建pdf文件对象 from fpdf import FPDF, Alignpdf FPDF() # 创建pdf文件对象 获取边距 print(pdf.l_…...

亚远景-ASPICE评估:汽车软件项目的过程能力评价

ASPICE(Automotive SPICE)的评估对象主要是汽车软件研发过程。 这个评估过程不仅仅关注最终的软件产品,而是深入到软件开发的全生命周期中,从需求分析、设计、编码、测试到发布和维护等各个环节。 具体来说,ASPICE评…...

电脑提示directx错误导致玩不了游戏怎么办?dx出错的解决方法

想必大家都有过这样的崩溃瞬间:满心欢喜打开心仪的游戏,准备在虚拟世界里大杀四方或者畅游冒险,结果屏幕上突然弹出个 DirectX 错误的提示框,紧接着游戏闪退,一切美好戛然而止。DirectX 作为 Windows 系统下游戏运行的…...

【13】制作镜像以及重启实例

制作镜像 k8s集群 有两个镜像需要制作,一个是master节点,一个是node节点。 在master节点上成功部署了k8s的控制平面,在node节点上部署了worker节点的配置,不知道打包镜像重启之后集群的状态是什么样的。 确认集群在运行&#…...

electron 启动警告

1. 问题 当启动 electron 时,控制台警告 Electron Security Warning (Insecure Content-Security-Policy) This renderer process has either no Content Security 2. 解决方法 在主进程文件 main.js 中添加如下内容 process.env["ELECTRON_DISABLE_SECURI…...

wow-agent 学习笔记

wow-agent-课程详情 | Datawhale 前两课比较基础,无笔记 第三课 阅卷智能体这一块,曾经做过一点和AI助教相关的内容,也是用了一个prompt去进行CoT,但是风格和课程中的不太相同,在下面附上我的prompt 你是一名资深教…...

使用Cilium/eBPF实现大规模云原生网络和安全

大家读完觉得有帮助记得关注和点赞!!! 目录 抽象 1 Trip.com 云基础设施 1.1 分层架构 1.2 更多细节 2 纤毛在 Trip.com 2.1 推出时间表 2.2 自定义 2.3 优化和调整 2.3.1 解耦安装 2.3.2 避免重试/重启风暴 2.3.3 稳定性优先 2…...

“深入浅出”系列之C++:(4)回调函数

在写项目的时候遇见一个问题,现在的需求是主项目需要拿到子项目的结果来进行显示,那么如何集成呢,子项目里面有一个MainWindow类,类里 回调函数是一种通过函数指针将函数作为参数传递给另一个函数的编程技术。这种机制允许程序在特…...

Mysql--运维篇--主从复制和集群(主从复制I/O线程,SQL线程,二进制日志,中继日志,集群NDB)

一、主从复制 MySQL的主从复制(Master-Slave Replication)是一种数据冗余和高可用性的解决方案,它通过将一个或多个从服务器(Slave)与主服务器(Master)同步来实现。主从复制的基本原理是&#…...

设计模式 行为型 状态模式(State Pattern)与 常见技术框架应用 解析

状态模式(State Pattern)是一种行为型设计模式,它允许对象在内部状态改变时改变其行为,使得对象看起来好像修改了它的类。这种设计模式的核心思想是将对象的状态和行为封装成不同的状态类,通过状态对象的行为改变来避免…...

计算机网络 (38)TCP的拥塞控制

前言 TCP拥塞控制是传输控制协议(Transmission Control Protocol,TCP)避免网络拥塞的算法,是互联网上主要的一个拥塞控制措施。 一、目的 TCP拥塞控制的主要目的是防止过多的数据注入到网络中,使网络能够承受现有的网络…...

鸿蒙面试 2025-01-09

鸿蒙分布式理念?(个人认为理解就好) 鸿蒙操作系统的分布式理念主要体现在其独特的“流转”能力和相关的分布式操作上。在鸿蒙系统中,“流转”是指涉多端的分布式操作,它打破了设备之间的界限,实现了多设备…...

【关于for循环的几种写法】

关于for循环的几种写法 在 C 中&#xff0c;for(int i 0; i < n; i) 是一种常见的循环写法&#xff0c;用于遍历从 0 到 n-1 的索引。如果你希望简化这种写法&#xff0c;可以使用以下几种方法&#xff1a; 1. 使用范围 for 循环 如果你需要遍历一个容器&#xff08;如数…...

Apache和PHP:构建动态网站的黄金组合

在当今的互联网世界&#xff0c;网站已经成为了企业、个人和机构展示自己、与用户互动的重要平台。而在这些动态网站的背后&#xff0c;Apache和PHP无疑是最受开发者青睐的技术组合之一。这一组合提供了高效、灵活且可扩展的解决方案&#xff0c;帮助您快速搭建出强大的网站&am…...

免费开源的下载工具Xdown

软件介绍 Xdown是一款功能强大的开源免费下载工具&#xff0c;专为PC端用户设计&#xff0c;支持多种协议和下载方式。 1、多线程下载 Xdown支持最高128线程的并发下载&#xff0c;能够将文件分割成多个部分同时下载&#xff0c;从而显著提升下载速度。 2、多种协议支持 该…...

Three.js 数学工具:构建精确3D世界的基石

文章目录 前言一、向量&#xff08;Vectors&#xff09;二、矩阵&#xff08;Matrices&#xff09;三、四元数&#xff08;Quaternions&#xff09;四、欧拉角&#xff08;Euler Angles&#xff09;五、颜色&#xff08;Colors&#xff09;六、几何体生成器&#xff08;Geometr…...

如何明智地提问

如何明智地提问的重要总结&#xff0c;让我为主要观点添加一些具体的实践建议&#xff1a; 提问前的准备工作 尝试在 Google、Stack Overflow 等平台搜索相似问题阅读相关文档和错误日志尝试自己调试和排查问题记录下已尝试过的解决方案 选择合适的提问平台 Stack Overflow…...

Microsoft Sql Server 2019 函数理解

说到函数&#xff0c;首先和存储过程作个比较吧&#xff0c;两者有一个共同点都是预编译优化后存储在磁盘中&#xff0c;所以效率 要比T-SQL高一点点。值得注意的是&#xff0c;存储过程可以创建或访问临时表&#xff0c;而函数不可以&#xff1b; 同时函数不可 以修改表中的数…...

自定义日期转换配置

文章目录 1.日期问题出现原因以及解决方案概述1.图示2.三种解决方案概述1.对于表单数据 application/x-www-form-urlencoded2.对于JSON数据1.使用JsonFormat注解2.自定义Jackson日期转换配置 2.解决方案common-web-starter1.目录2.BaseController.java 使用InitBinder解决表单数…...

“AI智能服务平台系统,让生活更便捷、更智能

大家好&#xff0c;我是资深产品经理老王&#xff0c;今天咱们来聊聊一个让生活变得越来越方便的高科技产品——AI智能服务平台系统。这个系统可是现代服务业的一颗璀璨明珠&#xff0c;它究竟有哪些魅力呢&#xff1f;下面我就跟大家伙儿闲聊一下。 一、什么是AI智能服务平台系…...

别再只用Service了!ROS1 Action通信保姆级教程:从导航进度条到任务取消,手把手教你实现带反馈的机器人任务

别再只用Service了&#xff01;ROS1 Action通信保姆级教程&#xff1a;从导航进度条到任务取消&#xff0c;手把手教你实现带反馈的机器人任务当你的机器人正在执行一个长达10分钟的导航任务时&#xff0c;突然发现目标点设置错误&#xff0c;这时候如果只能干等着任务完成或者…...

智能检索新范式,让AIAgent自主决策,提升RAG效率100%!

市面上的 RAG 系统&#xff0c;不管叫什么名字&#xff0c;本质上只有两种做法&#xff1a; 第一种&#xff0c;一次性检索。把用户的 query 向量化&#xff0c;从语料库里捞出 Top-K 个文档片段&#xff0c;拼成一个大 prompt 塞给模型。GraphRAG、HippoRAG、LightRAG 都属于…...

用数字逻辑门复刻柏林钟:从二进制编码到硬件实现

1. 项目概述&#xff1a;用数字电路复刻“柏林钟”作为一个在柏林长大的孩子&#xff0c;我从小就对库达姆大街上的那座“柏林钟”着迷。它不像传统时钟那样用指针或数字告诉你时间&#xff0c;而是通过几排不同颜色的发光方块&#xff0c;以一种近乎艺术的方式呈现时间。这种独…...

pan-baidu-download:百度网盘多线程下载加速器架构解析与性能优化指南

pan-baidu-download&#xff1a;百度网盘多线程下载加速器架构解析与性能优化指南 【免费下载链接】pan-baidu-download 百度网盘下载脚本 项目地址: https://gitcode.com/gh_mirrors/pa/pan-baidu-download pan-baidu-download是一款基于Python开发的百度网盘命令行下载…...

【DeepSeek架构评审功能深度解密】:20年架构师亲授3大避坑指南与5步落地 checklist

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;DeepSeek架构评审功能全景概览 DeepSeek架构评审功能是一套面向大模型系统设计与工程落地的自动化分析框架&#xff0c;聚焦于模型结构合理性、计算图优化潜力、内存访问模式、算子兼容性及部署约束等多维度评…...

37家金融客户紧急启用的DeepSeek扫描辅助加固包(含未公开API调用密钥策略)

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;DeepSeek漏洞扫描辅助的背景与战略价值 近年来&#xff0c;大模型在安全领域的应用正从辅助问答向深度协同防御演进。DeepSeek系列模型凭借其开源、高推理精度及强代码理解能力&#xff0c;成为构建智能化漏洞…...

中小企无需重型数据中台:轻量化数据体系搭建完整方案

过去几年&#xff0c;“数据中台”一度成为企业数字化的标配热词。大量中小企业盲目跟风搭建重型数据中台&#xff0c;投入高额成本、耗费数月甚至数年周期&#xff0c;最终落地效果极差&#xff1a;功能冗余、运维复杂、使用率低、投入产出比失衡。大量项目最终沦为“摆设式中…...

在github上快速接入taotoken大模型api的python调用教程

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 在GitHub上快速接入Taotoken大模型API的Python调用教程 对于希望快速集成大模型能力的开发者而言&#xff0c;找到一个统一、便捷的…...

从无人机到自动驾驶:一文读懂ROS中ENU、NED、相机坐标系到底怎么用

从无人机到自动驾驶&#xff1a;ROS中ENU、NED与相机坐标系实战指南 当你在无人机上安装Realsense相机时&#xff0c;是否遇到过相机数据与飞控数据"对不上"的情况&#xff1f;或者在自动驾驶项目中&#xff0c;GPS的北东地坐标如何与激光雷达的东北天坐标对齐&#…...

PyKafka社区贡献指南:从问题报告到代码提交的完整流程

PyKafka社区贡献指南&#xff1a;从问题报告到代码提交的完整流程 【免费下载链接】pykafka Apache Kafka client for Python; high-level & low-level consumer/producer, with great performance. 项目地址: https://gitcode.com/gh_mirrors/py/pykafka 想要为PyK…...