博客 / 詳情

返回

使用 Python 在 PDF 中繪製多種圖形

在進行 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()

繪製結果預覽

使用Python 在 PDF 中繪製多種圖形

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 執行。

6. 典型應用場景

(1)自動生成分析報告中的圖形示意

無需依賴 Excel 或圖表工具,直接在 PDF 輸出關鍵圖形。

(2)製作數據可視化的簡圖(輕量級)

例如:

  • 儀表盤的小型餅圖
  • 簡單色塊圖

適用於快速展示。

(3)PDF 表單的界面元素繪製

矩形、線條、漸變能用於:

  • 字段背景
  • 模塊分割線
  • 輸入區域框架

讓 PDF 表單更美觀。

7. 總結

通過本文的示例,你已經瞭解如何使用 Spire.PDF for Python 在一頁 PDF 中繪製多類圖形,並掌握了 PdfPenPdfBrush 及多種漸變畫刷的基本用法。這些繪圖能力不僅能用於生成示意線條、圖表元素和背景色塊,也能擴展到更加複雜的文檔可視化需求。

藉助這些核心對象,你可以自由組合線條、填充、漸變和形狀,構建具有良好視覺結構的自動化 PDF 內容。如果需要進一步增強效果,還可以加入文本標註、圖像、座標系或自定義多邊形等元素,使文檔更加完整專業。

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.