使用Python在PDF中绘制多种图形的操作示例

作者:

文章目录
  • 通过 pip 安装: pip install spire.pdf.free Spire.PDF 提供 PdfDocument, PdfPageBase, PdfPen, PdfBrush 等常用对象,能轻松实现绘图、文本、图像等内容的组合输出。
  • 首先创建文档、添加页面,并保存当前画布状态(以便在绘制完一组图形后恢复环境): from spire.pdf.common import * from spire.pdf import * # 创建 PDF 文档 doc = PdfDocument() page = doc.Pages.Add() # 保存绘图状态 state = page.Canvas.Save()
  • 以下代码将在一个 PDF 页面中 按顺序分段绘制所有图形。
  • 为了更好地理解这些图形的绘制机制,这里对关键对象进行说明。
  • 通过本文的示例,你已经了解如何使用 Spire.PDF for Python 在一页 PDF 中绘制多类图形,并掌握了 PdfPen、PdfBrush 及多种渐变画刷的基本用法。这些绘图能力不仅能用于生成示意线条、图表元素和背景色块,也能扩展到更加复杂的文档可视化需求。 借助这些核心对象,你可以自由组合线条、填充、渐变和形状,构建具有良好视觉结构的自动化 PDF 内容。如果需要进一步增强效果,还可以加入文本标注、图像、坐标系或自定义多边形等元素,使文档更加完整专业。 以上就是使用Python在PDF中绘制多种图形的操作示例的详细内容,更多关于Python PDF绘制多种图形的资料请关注风君子博客其它相关文章! 您可能感兴趣的文章: 使用Python实现PDF文档自动化编辑与图表绘制的全指南 Python 在PDF中绘制线条、矩形、椭圆形的方法 Python实现在PDF中绘制形状
  • 目录
    • 1. 环境准备
    • 2. 创建 PDF 文档与页面
    • 3. 在 PDF 中绘制不同类型的图形
      • Python 在 PDF 页面绘制图形示例代码
      • 绘制结果预览
    • 4. 关键绘图对象与概念解析
      • (1)PdfPen:绘制线条、边框的核心工具
      • (2)PdfBrush:绘制填充内容
      • (3)Canvas:图形绘制的承载对象
    • 5. 典型应用场景
      • (1)自动生成分析报告中的图形示意
      • (2)制作数据可视化的简图(轻量级)
      • (3)PDF 表单的界面元素绘制
    • 6. 总结

      在进行 PDF 自动化处理时,人们往往首先想到的是文本生成、图片嵌入或表格绘制等常规需求。然而在许多实际业务场景中,能够在 PDF 中灵活绘制图形同样至关重要。例如技术报告需要示意线条和流程节点,简易统计图需要用到扇形或色块,而某些表单或自动化文档则需要定制背景区域、标注或分隔元素。

      Python 本身的图形绘制并不直接面向 PDF,但借助专业的 PDF 库,我们可以高效完成各种图形的渲染。本文将基于免费的 Free Spire.PDF for Python,一步步示范如何在同一页 PDF 中绘制多种常见图形,包括线条、扇形、矩形(含渐变)、椭圆等。

      通过 pip 安装:

      pip install spire.pdf.free

      Spire.PDF 提供 PdfDocumentPdfPageBasePdfPenPdfBrush 等常用对象,能轻松实现绘图、文本、图像等内容的组合输出。

      首先创建文档、添加页面,并保存当前画布状态(以便在绘制完一组图形后恢复环境):

      from spire.pdf.common import *
      from spire.pdf import *
      
      # 创建 PDF 文档
      doc = PdfDocument()
      page = doc.Pages.Add()
      
      # 保存绘图状态
      state = page.Canvas.Save()

      以下代码将在一个 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()

      为了更好地理解这些图形的绘制机制,这里对关键对象进行说明。

      PdfPen 决定线条的颜色、粗细、样式:

      • PdfPen(color, width):创建笔对象
      • pen.DashStyle:虚线、点线等
      • pen.DashPattern:自定义线段 / 间隔模式

      在工程制图或示意图中十分常用。

      • PdfSolidBrush —— 实心颜色
      • PdfLinearGradientBrush —— 线性渐变(适合高亮效果)
      • PdfRadialGradientBrush —— 放射渐变(常用于聚焦或球形效果)

      这类 Brush 在制作图表、色块、背景强调时非常好用。

      常用方法包括:

      • DrawLine()
      • DrawPie()
      • DrawRectangle()
      • DrawEllipse()

      所有图形绘制操作都需要通过 page.Canvas 执行。

      无需依赖 Excel 或图表工具,直接在 PDF 输出关键图形。

      例如:

      • 仪表盘的小型饼图
      • 简单色块图

      适用于快速展示。

      矩形、线条、渐变能用于:

      • 字段背景
      • 模块分割线
      • 输入区域框架

      让 PDF 表单更美观。

      通过本文的示例,你已经了解如何使用 Spire.PDF for Python 在一页 PDF 中绘制多类图形,并掌握了 PdfPenPdfBrush 及多种渐变画刷的基本用法。这些绘图能力不仅能用于生成示意线条、图表元素和背景色块,也能扩展到更加复杂的文档可视化需求。

      借助这些核心对象,你可以自由组合线条、填充、渐变和形状,构建具有良好视觉结构的自动化 PDF 内容。如果需要进一步增强效果,还可以加入文本标注、图像、坐标系或自定义多边形等元素,使文档更加完整专业。

      以上就是使用Python在PDF中绘制多种图形的操作示例的详细内容,更多关于Python PDF绘制多种图形的资料请关注风君子博客其它相关文章!

      您可能感兴趣的文章:

      • 使用Python实现PDF文档自动化编辑与图表绘制的全指南
      • Python 在PDF中绘制线条、矩形、椭圆形的方法
      • Python实现在PDF中绘制形状

      站内搜索