PDF ドキュメントにおける図形は、視覚的な情報を補足したりレイアウトを強化したりするうえで、非常に重要な役割を果たします。線・枠線・塗りつぶし・幾何学的変形などの描画操作を組み合わせることで、チャート、装飾、ロゴなど、ドキュメントの可読性やデザイン性を高める要素を自由に作成できます。図形の色、線種、塗りつぶし効果などのプロパティは用途に合わせて柔軟にカスタマイズできます。
本記事では、Spire.PDF for Python を利用して PythonコードでPDFに図形を描画する方法 を紹介します。
クイックナビゲーション
Spire.PDF for Pythonのインストール
この機能を使用するには、Spire.PDF for Pythonとplum-dispatch v1.7.4が必要です。Windows環境では、以下のpipコマンドで簡単にインストールできます。
pip install Spire.PDF
または、Spire.PDF for Pythonのダウンロードページから直接ダウンロードして、プロジェクトに追加することもできます。
PythonでPDFに線を描画する
PdfPageBase.Canvas.DrawLine() メソッドを使用すると、始点・終点の座標とペン(PdfPen)を指定して線を描画できます。
操作手順
- PdfDocument オブジェクトを作成する
- PdfDocument.Pages.Add() で空白ページを追加する
- Canvas.Save() で描画状態を保存する
- 始点(x, y)と線の長さを設定する
- PdfPen を作成する
- DrawLine() を使って実線を描画する
- ペンの DashStyle を PdfDashStyle.Dash に変更して破線に切り替える
- 破線の線分を描画する
- Canvas.Restore(state) で描画状態を復元する
- SaveToFile() でPDFを保存する
サンプルコード(Python)
from spire.pdf.common import *
from spire.pdf import *
# PDF ドキュメント オブジェクトを作成する
doc = PdfDocument()
# ページを追加する
page = doc.Pages.Add()
# 現在の描画状態を保存する
state = page.Canvas.Save()
# 線の開始位置(X 座標)
x = 100.0
# 線の開始位置(Y 座標)
y = 50.0
# 線の長さ
width = 300.0
# ディープスカイブルーの色と太さ 3.0 のペン オブジェクトを作成する
pen = PdfPen(PdfRGBColor(Color.get_DeepSkyBlue()), 3.0)
# 実線を描画する
page.Canvas.DrawLine(pen, x, y, x + width, y)
# ペンの線種を破線に設定する
pen.DashStyle = PdfDashStyle.Dash
# 破線パターンを [1, 4, 1] に設定する
pen.DashPattern = [1, 4, 1]
# 破線の開始位置(Y 座標)
y = 80.0
# 破線を描画する
page.Canvas.DrawLine(pen, x, y, x + width, y)
# 保存しておいた描画状態を復元する
page.Canvas.Restore(state)
# ドキュメントをファイルに保存する
doc.SaveToFile("Drawing Lines.pdf")
# ドキュメントを閉じ、リソースを解放する
doc.Close()
doc.Dispose()
レンダリング結果

図形ではなく画像を挿入したい場合は、PythonでPDFに画像を挿入する方法を参照してください。
PythonでPDFに円弧(パイ)を描画する
PdfPageBase.Canvas.DrawPie() メソッドを使うと、位置・サイズ・開始角度・終了角度を指定してパイ図形を描画できます。
操作手順
- PdfDocument オブジェクトを作成する
- 空白ページを追加する
- Canvas.Save() で描画状態を保存する
- PdfPen を作成する
- DrawPie() を使用し、位置や角度の異なる複数のパイを描画する
- Canvas.Restore(state) で状態を復元する
- PDFを保存する
サンプルコード(Python)
from spire.pdf.common import *
from spire.pdf import *
# PDF ドキュメント オブジェクトを作成する
doc = PdfDocument()
# ページを追加する
page = doc.Pages.Add()
# 現在の描画状態を保存する
state = page.Canvas.Save()
# ダークレッドの色と太さ 2.0 のペン オブジェクトを作成する
pen = PdfPen(PdfRGBColor(Color.get_DarkRed()), 2.0)
# 1 つ目の円グラフを描画する
page.Canvas.DrawPie(pen, 10.0, 30.0, 130.0, 130.0, 360.0, 300.0)
# 2 つ目の円グラフを描画する
page.Canvas.DrawPie(pen, 160.0, 30.0, 130.0, 130.0, 360.0, 330.0)
# 3 つ目の円グラフを描画する
page.Canvas.DrawPie(pen, 320.0, 30.0, 130.0, 130.0, 360.0, 360.0)
# 保存しておいた描画状態を復元する
page.Canvas.Restore(state)
# ドキュメントをファイルに保存する
doc.SaveToFile("Drawing Pie Charts.pdf")
# ドキュメントを閉じ、リソースを解放する
doc.Close()
doc.Dispose()
レンダリング結果

PythonでPDFに長方形を描画する
長方形の描画には PdfPageBase.Canvas.DrawRectangle() を使用します。位置(x, y)とサイズ(幅・高さ)を指定すれば任意の長方形を描けます。
操作手順
- PdfDocument オブジェクトを作成する
- 空白ページを追加する
- Canvas.Save() で描画状態を保存する
- PdfPen を作成し、枠線のみの長方形を描画する
- 線形グラデーション用に PdfLinearGradientBrush を作成する
- グラデーションブラシを使って塗りつぶし長方形を描画する
- 放射状グラデーション用に PdfRadialGradientBrush を作成する
- こちらのブラシでも塗りつぶし長方形を描画する
- Canvas.Restore(state) で描画状態を復元する
- PDFを保存する
サンプルコード(Python)
from spire.pdf.common import *
from spire.pdf import *
# PDF ドキュメント オブジェクトを作成する
doc = PdfDocument()
# ページを追加する
page = doc.Pages.Add()
# 現在の描画状態を保存する
state = page.Canvas.Save()
# チョコレート色で太さ 1.5 のペン オブジェクトを作成する
pen = PdfPen(PdfRGBColor(Color.get_Chocolate()), 1.5)
# ペンを使用して長方形の枠線を描画する
page.Canvas.DrawRectangle(pen, RectangleF(PointF(20.0, 30.0), SizeF(150.0, 120.0)))
# 線形グラデーション ブラシを作成する
linearGradientBrush = PdfLinearGradientBrush(
PointF(200.0, 30.0),
PointF(350.0, 150.0),
PdfRGBColor(Color.get_Green()),
PdfRGBColor(Color.get_Red())
)
# 線形グラデーション ブラシを使用して長方形を塗りつぶす
page.Canvas.DrawRectangle(linearGradientBrush, RectangleF(PointF(200.0, 30.0), SizeF(150.0, 120.0)))
# 放射状グラデーション ブラシを作成する
radialGradientBrush = PdfRadialGradientBrush(
PointF(380.0, 30.0), 150.0,
PointF(530.0, 150.0), 150.0,
PdfRGBColor(Color.get_Orange()),
PdfRGBColor(Color.get_Blue())
)
# 放射状グラデーション ブラシを使用して長方形を塗りつぶす
page.Canvas.DrawRectangle(radialGradientBrush, RectangleF(PointF(380.0, 30.0), SizeF(150.0, 120.0)))
# 保存しておいた描画状態を復元する
page.Canvas.Restore(state)
# ドキュメントをファイルに保存する
doc.SaveToFile("Drawing Rectangle Shapes.pdf")
# ドキュメントを閉じ、リソースを解放する
doc.Close()
doc.Dispose()
レンダリング結果

こちらもおすすめ:PythonでPDF内の画像の透明度を設定する方法
PythonでPDFに楕円を描画する
楕円の描画には PdfPageBase.Canvas.DrawEllipse() を使用します。輪郭線だけの楕円、塗りつぶし楕円の両方に対応しています。
操作手順
- PdfDocument オブジェクトを作成する
- 空白ページを追加する
- Canvas.Save() で描画状態を保存する
- PdfPen を作成し、位置とサイズを指定して楕円の輪郭を描く
- PdfSolidBrush を作成する
- 塗りつぶしブラシを使用して楕円を描く
- Canvas.Restore(state) で状態を復元する
- PDFを保存する
サンプルコード(Python)
from spire.pdf.common import *
from spire.pdf import *
# PDF ドキュメント オブジェクトを作成する
doc = PdfDocument()
# ページを追加する
page = doc.Pages.Add()
# 現在の描画状態を保存する
state = page.Canvas.Save()
# ペン オブジェクトを作成する
pen = PdfPens.get_CadetBlue()
# 楕円形の枠線を描画する
page.Canvas.DrawEllipse(pen, 50.0, 30.0, 120.0, 100.0)
# 塗りつぶし用のブラシ オブジェクトを作成する
brush = PdfSolidBrush(PdfRGBColor(Color.get_CadetBlue()))
# 塗りつぶした楕円形を描画する
page.Canvas.DrawEllipse(brush, 180.0, 30.0, 120.0, 100.0)
# 保存しておいた描画状態を復元する
page.Canvas.Restore(state)
# ドキュメントをファイルに保存する
doc.SaveToFile("Drawing Ellipse Shape.pdf")
# ドキュメントを閉じ、リソースを解放する
doc.Close()
doc.Dispose()
レンダリング結果

一時ライセンスの申請
生成されたドキュメントから評価メッセージを削除したり、機能制限を解除したい場合は、30 日間の試用ライセンスを申請してください。






