在进行 pdf 自动化处理时,人们往往首先想到的是文本生成、图片嵌入或表格绘制等常规需求。然而在许多实际业务场景中,能够在 pdf 中灵活绘制图形同样至关重要。例如技术报告需要示意线条和流程节点,简易统计图需要用到扇形或色块,而某些表单或自动化文档则需要定制背景区域、标注或分隔元素。
python 本身的图形绘制并不直接面向 pdf,但借助专业的 pdf 库,我们可以高效完成各种图形的渲染。本文将基于免费的 free spire.pdf for python,一步步示范如何在同一页 pdf 中绘制多种常见图形,包括线条、扇形、矩形(含渐变)、椭圆等。
1. 环境准备
通过 pip 安装:
pip install spire.pdf.free
spire.pdf 提供 pdfdocument, pdfpagebase, pdfpen, pdfbrush 等常用对象,能轻松实现绘图、文本、图像等内容的组合输出。
2. 创建 pdf 文档与页面
首先创建文档、添加页面,并保存当前画布状态(以便在绘制完一组图形后恢复环境):
from spire.pdf.common import * from spire.pdf import * # 创建 pdf 文档 doc = pdfdocument() page = doc.pages.add() # 保存绘图状态 state = page.canvas.save()
3. 在 pdf 中绘制不同类型的图形
以下代码将在一个 pdf 页面中 按顺序分段绘制所有图形。
python 在 pdf 页面绘制图形示例代码
from spire.pdf import *
# 创建 pdf 文档
doc = pdfdocument()
page = doc.pages.add()
# 保存绘图环境
state = page.canvas.save()
# ========== 1. 绘制线条(实线 + 虚线) ==========
pen1 = pdfpen(pdfrgbcolor(color.get_steelblue()), 2.2)
x, y = 50.0, 40.0
length = 350.0
# 实线
page.canvas.drawline(pen1, x, y, x + length, y)
# 虚线线条
y += 25.0
pen1.dashstyle = pdfdashstyle.dashdot
pen1.dashpattern = [2.0, 3.0, 1.0]
page.canvas.drawline(pen1, x, y, x + length, y)
# ========== 2. 绘制三个饼图扇形 ==========
pen2 = pdfpen(pdfrgbcolor(color.get_maroon()), 1.8)
# 扇形 1
page.canvas.drawpie(pen2, 40.0, 90.0, 110.0, 110.0, 270.0, 230.0)
# 扇形 2
page.canvas.drawpie(pen2, 170.0, 90.0, 110.0, 110.0, 360.0, 260.0)
# 扇形 3
page.canvas.drawpie(pen2, 300.0, 90.0, 110.0, 110.0, 180.0, 330.0)
# ========== 3. 矩形(边框、线性渐变、放射渐变) ==========
# 空心矩形
pen3 = pdfpen(pdfrgbcolor(color.get_saddlebrown()), 2.0)
page.canvas.drawrectangle(
pen3,
rectanglef(pointf(40.0, 220.0), sizef(130.0, 95.0))
)
# 线性渐变矩形
linear = pdflineargradientbrush(
pointf(200.0, 220.0),
pointf(320.0, 300.0),
pdfrgbcolor(color.get_limegreen()),
pdfrgbcolor(color.get_goldenrod())
)
page.canvas.drawrectangle(
linear,
rectanglef(pointf(200.0, 220.0), sizef(130.0, 95.0))
)
# 放射渐变矩形
radial = pdfradialgradientbrush(
pointf(360.0, 220.0), 90.0,
pointf(470.0, 300.0), 90.0,
pdfrgbcolor(color.get_orangered()),
pdfrgbcolor(color.get_dodgerblue())
)
page.canvas.drawrectangle(
radial,
rectanglef(pointf(360.0, 220.0), sizef(130.0, 95.0))
)
# ========== 4. 椭圆(空心 + 实心) ==========
pen4 = pdfpens.get_cadetblue()
# 空心椭圆
page.canvas.drawellipse(pen4, 60.0, 350.0, 130.0, 85.0)
# 实心椭圆
brush = pdfsolidbrush(pdfrgbcolor(color.get_cadetblue()))
page.canvas.drawellipse(brush, 230.0, 350.0, 130.0, 85.0)
# 恢复状态
page.canvas.restore(state)
# 保存文件
doc.savetofile("drawing_shapes.pdf")
doc.close()
doc.dispose()绘制结果预览

4. 关键绘图对象与概念解析
为了更好地理解这些图形的绘制机制,这里对关键对象进行说明。
(1)pdfpen:绘制线条、边框的核心工具
pdfpen 决定线条的颜色、粗细、样式:
pdfpen(color, width):创建笔对象pen.dashstyle:虚线、点线等pen.dashpattern:自定义线段 / 间隔模式
在工程制图或示意图中十分常用。
(2)pdfbrush:绘制填充内容
pdfsolidbrush—— 实心颜色pdflineargradientbrush—— 线性渐变(适合高亮效果)pdfradialgradientbrush—— 放射渐变(常用于聚焦或球形效果)
这类 brush 在制作图表、色块、背景强调时非常好用。
(3)canvas:图形绘制的承载对象
常用方法包括:
drawline()drawpie()drawrectangle()drawellipse()
所有图形绘制操作都需要通过 page.canvas 执行。
5. 典型应用场景
(1)自动生成分析报告中的图形示意
无需依赖 excel 或图表工具,直接在 pdf 输出关键图形。
(2)制作数据可视化的简图(轻量级)
例如:
- 仪表盘的小型饼图
- 简单色块图
适用于快速展示。
(3)pdf 表单的界面元素绘制
矩形、线条、渐变能用于:
- 字段背景
- 模块分割线
- 输入区域框架
让 pdf 表单更美观。
6. 总结
通过本文的示例,你已经了解如何使用 spire.pdf for python 在一页 pdf 中绘制多类图形,并掌握了 pdfpen、pdfbrush 及多种渐变画刷的基本用法。这些绘图能力不仅能用于生成示意线条、图表元素和背景色块,也能扩展到更加复杂的文档可视化需求。
借助这些核心对象,你可以自由组合线条、填充、渐变和形状,构建具有良好视觉结构的自动化 pdf 内容。如果需要进一步增强效果,还可以加入文本标注、图像、坐标系或自定义多边形等元素,使文档更加完整专业。
以上就是使用python在pdf中绘制多种图形的操作示例的详细内容,更多关于python pdf绘制多种图形的资料请关注代码网其它相关文章!
发表评论