当前位置: 首页 > 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智能服务平台系…...

SQL美化器优化

文章目录 1.目录2.代码 1.目录 2.代码 package com.sunxiansheng.mybatis.plus.inteceptor;import org.apache.ibatis.executor.statement.StatementHandler; import org.apache.ibatis.mapping.*; import org.apache.ibatis.plugin.*; import org.apache.ibatis.reflection.*…...

我的128天创作之路:回顾与展望

大家好呀&#xff01;今天来和你们分享一下我的创作历程&#x1f601;。 一、机缘 最开始创作呢&#xff0c;是因为在学习 C 的 STL 时&#xff0c;像 string、list、vector 这些模板可把我折腾得够呛&#xff0c;但也让我学到了超多东西&#xff01;我就想&#xff0c;要是把我…...

内核配置参数整理

#参考网页 linux5.2 &#xff1c;.config&#xff1e;文件注释 详细解释 CONFIG_ARMy&#xff1a;启用ARM架构支持&#xff0c;这是ARM处理器专用的内核配置选项。 CONFIG_ARM_HAS_SG_CHAINy&#xff1a;启用对散列表&#xff08;scatter-gather&#xff09;链的支持&#xf…...

SpringBoot整合Easy-es

一.什么是Easy-Es Easy-Es&#xff08;简称EE&#xff09;是一款基于ElasticSearch(简称Es)官方提供的RestHighLevelClient打造的ORM开发框架&#xff0c;在 RestHighLevelClient 的基础上,只做增强不做改变&#xff0c;为简化开发、提高效率而生,您如果有用过Mybatis-Plus(简称…...

于交错的路径间:分支结构与逻辑判断的思维协奏

大家好啊&#xff0c;我是小象٩(๑ω๑)۶ 我的博客&#xff1a;Xiao Xiangζั͡ޓއއ 很高兴见到大家&#xff0c;希望能够和大家一起交流学习&#xff0c;共同进步。* 这一节内容很多&#xff0c;文章字数达到了史无前例的一万一&#xff0c;我们要来学习分支与循环结构中…...

Linux之读者写者模型与特殊锁的学习

目录 读者写者模型 特殊锁 悲观锁 自旋锁 在前几期&#xff0c;我们学习了多线程的生产者和消费者模型&#xff0c;生产者和消费者模型中&#xff0c;有三种关系&#xff0c;两个角色&#xff0c;一个场所&#xff0c;那么读者写者模型和生产者消费者模型有什么关联吗&…...

回溯专题 记录

回溯的题目按照这套模板进行&#xff1b; 我感觉整体逻辑还是递归&#xff0c;只不过有了pop_back才是回溯概念&#xff1b; class Solution {public:vector<int> path;vector<vector<int>> ans;void backtracking(int n,int k,int startindex){if(path.…...

使用 Python 实现自动化办公(邮件、Excel)

目录 一、Python 自动化办公的准备工作 1.1 安装必要的库 1.2 设置邮件服务 二、邮件自动化处理 2.1 发送邮件 示例代码 注意事项 2.2 接收和读取邮件 示例代码 三、Excel 自动化处理 3.1 读取和写入 Excel 文件 示例代码 3.2 数据处理和分析 示例代码 四、综合…...

贪心算法笔记

贪心算法笔记 大概内容 贪心就是对于一个问题有很多个步骤,我们在每一个步骤中都选取最优的那一个,最后得出答案。就是在一些函数中可行,但是有些比如二次函数,因为它的转折点不一定最优,就是不可行的。那么如何判断贪心呢?有这么几种 看时间复杂度,一般的就是 O ( n…...

Formality:两种等价状态consistency和equality

相关阅读 Formalityhttps://blog.csdn.net/weixin_45791458/category_12841971.html?spm1001.2014.3001.5482 背景 逻辑锥的等价性检查时&#xff0c;存在两种验证模式&#xff1a;一致(consistency)和等同(equality)&#xff0c;要理解这两点&#xff0c;首先得明白综合工具…...

惠州做网站/苏州疫情最新情况

为什么下面的代码删除文件后&#xff0c;还可用 360 软件恢复回来(已亲测)&#xff1f;难道要用 mmap 模块吗&#xff1f;#--------------------------------------------------import tkinter.filedialog as tfdef selecFile(title多文件选择,fmt.):(多个)文件选择(对话框) 返…...

企业官方网站建设如何/鸿科经纬教网店运营推广

本文转载自&#xff1a;Java中会存在内存泄漏吗&#xff0c;请简单描述 会。java导致内存泄露的原因很明确&#xff1a;长生命周期的对象持有短生命周期对象的引用就很可能发生内存泄露&#xff0c;尽管短生命周期对象已经不再需要&#xff0c; 但是因为长生命周期对象持有它…...

华为做网站吗/优化大师哪个好

我正在运行主类,我想运行一个单独的类来对数字进行混洗,然后将经过混洗的数字返回到我的主类中.在我的混洗课程中,我有return语句…但是现在我该怎么办&#xff1f;如何在主类中使用int数组的随机顺序&#xff1f;这是我的洗牌课&#xff1a;public class Shuffle {public stat…...

可以做英语题的网站/网络营销怎么做?

命令 last | grep reboot &#xff08;查看开机时间记录&#xff09; last | grep shutdown &#xff08;查看关机时间记录&#xff09; /var/log/messages日志中查询reboot&#xff08;系统重启&#xff09; 或者halt&#xff08;系统关机&#xff09; 1.作用 linux系统中last…...

wordpress搬站流程/seo网站内部优化方案

我们对内存条是“情有独钟”&#xff0c;电脑卡了我们会直接加装内存条&#xff0c;游戏运行不流畅也会直接加装内存条&#xff0c;总之在很多人心中认为电脑内存条 就像电脑的“救世主”&#xff0c;那么&#xff0c;内存条在电脑中的作用究竟有多大呢&#xff1f;电脑内存条的…...

石家庄外贸网站制作公司/百度seo服务方案

DOM中的事件模拟 三个步骤&#xff1a; 首先通过document.createEvent()方法创建event对象&#xff0c;接收一个参数&#xff0c;即表示要创建的事件类型的字符串&#xff1a; UIEvents&#xff08;DOM3中的UIEvent&#xff09;鼠标和键盘事件&#xff1b; MouseEvents&#…...