在進行 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 執行。
6. 典型應用場景
(1)自動生成分析報告中的圖形示意
無需依賴 Excel 或圖表工具,直接在 PDF 輸出關鍵圖形。
(2)製作數據可視化的簡圖(輕量級)
例如:
- 儀表盤的小型餅圖
- 簡單色塊圖
適用於快速展示。
(3)PDF 表單的界面元素繪製
矩形、線條、漸變能用於:
- 字段背景
- 模塊分割線
- 輸入區域框架
讓 PDF 表單更美觀。
7. 總結
通過本文的示例,你已經瞭解如何使用 Spire.PDF for Python 在一頁 PDF 中繪製多類圖形,並掌握了 PdfPen、PdfBrush 及多種漸變畫刷的基本用法。這些繪圖能力不僅能用於生成示意線條、圖表元素和背景色塊,也能擴展到更加複雜的文檔可視化需求。
藉助這些核心對象,你可以自由組合線條、填充、漸變和形狀,構建具有良好視覺結構的自動化 PDF 內容。如果需要進一步增強效果,還可以加入文本標註、圖像、座標系或自定義多邊形等元素,使文檔更加完整專業。