今天接到一个需求,就是从应用系统中导出一份 PDF 报告,这份报告中既有文本段落,也有动态表格,还有图片。

我们系统的后端使用的是 Java,所以我用 itextpdf 实现了功能。

回来之后,想到 python 里面应该也有类似的包来实现,所以进行了一番探索。

今天就给大家来讲讲怎么使用 reportlab 生成一份图文并茂的 PDF。

文章末尾有彩蛋!

安装 ReportLab

首先,我们需要安装 ReportLab。可以使用pip命令来安装:

pip install reportlab

创建 PDF 文档

在开始创建PDF文档之前,我们需要导入ReportLab的Canvas类:


from reportlab.pdfgen import canvas

接下来,我们可以创建一个Canvas对象,指定PDF文件的名称和路径:

pdf_name = "my_tech_article.pdf"
pdf = canvas.Canvas(pdf_name)

添加文本

我们可以使用drawString()方法在PDF文档中添加文本:

pdf.drawString(50, 750, "My Technical Article")

这个方法的前两个参数是文本的x和y坐标,第三个参数是文本内容。

添加图像

我们可以使用drawImage()方法在PDF文档中添加图像:

from reportlab.lib.pagesizes import letterpdf.drawImage("my_image.png", 50, 650, width=letter[0], height=letter[1]/2)

这个方法的前三个参数是图像的x和y坐标,第四个参数是图像的宽度,第五个参数是图像的高度。

添加表格

我们可以使用Table类来添加表格。首先,需要导入Table类:

from reportlab.lib.pagesizes import letter
from reportlab.lib import colors
from reportlab.lib.units import inch
from reportlab.platypus import Tabledata = [    ["Name", "Age", "Gender"],["John", "25", "Male"],["Sarah", "30", "Female"],["Tom", "35", "Male"],
]table = Table(data)
table.setStyle([("BACKGROUND", (0, 0), (-1, 0), colors.grey),("TEXTCOLOR", (0, 0), (-1, 0), colors.whitesmoke),("ALIGN", (0, 0), (-1, 0), "CENTER"),("FONTNAME", (0, 0), (-1, 0), "Helvetica-Bold"),("FONTSIZE", (0, 0), (-1, 0), 14),("BOTTOMPADDING", (0, 0), (-1, 0), 12),("BACKGROUND", (0, 1), (-1, -1), colors.beige),("TEXTCOLOR", (0, 1), (-1, -1), colors.black),("ALIGN", (0, 1), (-1, -1), "CENTER"),("FONTNAME", (0, 1), (-1, -1), "Helvetica"),("FONTSIZE", (0, 1), (-1, -1), 12),("BOTTOMPADDING", (0, 1), (-1, -1), 6),("GRID", (0, 0), (-1, -1), 1, colors.black),]
)

总结

偷偷告诉大家,上面这些内容是 ChatGPT 写的,是不是很不错?

使用 ReportLab,python操作PDF一键生成相关推荐

  1. python怎么玩pdf_最全总结!聊聊 python 操作PDF的几种方法

    作者:陈熹 来源:早起Python 一.前言 大家好,有关Python操作PDF的案例之前已经写过一个PDF批量合并,这个案例初衷只是给大家提供一个便利的脚本,并没有太多讲解原理,其中涉及的就是PDF ...

  2. Python 操作 PDF 的几种方法

    作者 | 陈熹 来源 | 早起Python(ID:zaoqi-python) 头图 |  CSDN 下载自视觉中国 前言 大家好,有关 Python 操作 PDF 的案例之前已经写过一个????PDF ...

  3. task04 办公自动化之Python 操作 PDF

    # 基本库导入 import pandas as pd import numpy as np 1.相关库了解 利用python操作pdf会用到两个库,分别是:PyPDF2 和 pdfplumber 其 ...

  4. python操作pdf做文档的分割、合并,内容提取

    Python 操作 PDF 会用的库:PyPDF2 和 pdfplumber PyPDF2 可以更好的读取.写入.分割.合并PDF文件: pdfplumber 可以更好的读取 PDF 文件中内容和提取 ...

  5. python批量上传pdf,Python 操作 PDF 的几种方法

    以下文章来源于早起 Python ,作者陈熹 作者 | 陈熹 来源 | 早起 Python(ID:zaoqi-python) 头图 | CSDN 下载自视觉中国 前言 大家好,有关 Python 操作 ...

  6. python制作合同模板带图片_办公自动化7_用Python操作Word批量生成合同

    ########## 实例7:用Python操作Word批量生成合同 ################ ''' 来源网上整理 ,供学习使用. 我们建立的模板和合同信息如下图所示:这里有几个注意事项: ...

  7. python 操作PDF文件 之 A3页面转A4

    python 操作PDF文件 A3页面转A4页面 文章目录 1. 需求概述 2. 代码实现 1. 需求概述 最近接到一份PDF资料需要打印,奈何页面是如图所示的A3格式的,奈何目前条件只支持打印A4. ...

  8. 干货!Python操作PDF的神器——PyMuPDF

    点击上方"菜鸟学Python",选择"星标"公众号 超级无敌干货,第一时间送达!!! 来源:网络 01 PyMuPDF简介 1. 介绍 大家好,我是菜鸟哥.长假 ...

  9. 【实用篇】Python操作PDF文件

    PDF是Portable Document Format的缩写,这类文件通常使用 .pdf 作为其扩展名.在日常开发工作中,最容易遇到的就是从PDF中读取文本内容以及用已有的内容生成PDF文档这两个任 ...

最新文章

  1. REST API 的安全基础
  2. 中的ama格式_想发SCI?期刊引用格式选好了没?
  3. java自动创建月份_使用Java根据月份动态绘制BarGraph
  4. [Ubuntu] docker 安装及使用
  5. jQuery中iframe的操作
  6. C++14::lambda函数的类型
  7. 基于ssm公租房管理系统
  8. 计算机标图命令输入,电脑每次开机后都要使用ctfmon命令才能显示输入法图标怎么办...
  9. WEB安全 asp+access注入
  10. 自写string.h头文件(部分)
  11. 从Unity商店下载的插件存放的位置
  12. python绘制网络拓扑图_python 画网络拓扑图
  13. 聚合广告SDK开发(一)——基础知识
  14. HTTP的请求方法OPTIONS
  15. 使用TMS320F28335控制四位共阳数码管
  16. ResNet之残差结构的理解
  17. Qt 开发使用VSCode
  18. stl文件html预览,【stl文件在线预览】示例源码
  19. idea使用lombok的时候无法找到log,编译时无法找到log
  20. 计算机系统中处理的信息是什么,《深入理解计算机系统》第二章 信息的表示和处理...

热门文章

  1. ubuntu php 时区设置,Linux_Ubuntu8.10命令行下如何修改时区信息(图),在Ubuntu 8.10下如何更改时区和 - phpStudy...
  2. python插件汉化_Pycharm2020.1安装中文语言插件的详细教程(不需要汉化)
  3. Hi3519V101裸板uboot、内核(kernel)、文件系统(rootfs)移植全过程(基于hiTool工具烧写已验证)
  4. Linux TCP Finwait2/Timewait状态要义浅析
  5. 影视剪辑视频制作教程,必备私藏软件工具分享给大家
  6. linux系统查看jdk版本,路径及配置环境变量
  7. 科研闭环指南|学术论文撰写经验总结
  8. Uber成功上市:疯狂增长到800亿美金的IPO奇迹
  9. 如何使用Zotero快速创建bibliography
  10. 基于vue房屋合租网站的设计与实现