PythonでPDFに図形を描く（線、矩形、楕円など）

PDFに図形を描くことで、文書の視覚効果を高めることができます。実線、破線、長方形、円など、さまざまな種類の図形を追加することで、文書をより鮮明にして読者の注意を引くことができます。これは特に、レポートやプレゼンテーション、教材を作成する際に便利です。この記事では、PythonでPDFにさまざまな図形を描く方法を、以下の3つの例で紹介します。
* [PythonでPDFに実線・破線を描画する](#pythonでpdfに実線破線を描画する) 
* [PythonでPDFに矩形を描画する](#pythonでpdfに矩形を描画する)
* [PythonでPDFに楕円を描く](#pythonでpdfに楕円を描く)


## Python PDF API
PDFに様々な図形を追加するには、[**Spire.PDF for Python**](https://www.e-iceblue.com/Introduce/pdf-for-python.html)ライブラリが必要です。以下のpipコマンドで直接インストールできます：
> **pip install Spire.Pdf**

## PythonでPDFに実線・破線を描画する
Spire.PDF for Pythonライブラリは、PDFページ上の指定された位置に線を描画する **`PdfPageBase.Canvas.DrawLine()`** メソッドを提供します。Pdfペンのスタイルを設定することにより、実線や破線を描くことができます。

> Pythonのコード：
```python
from spire.pdf.common import *
from spire.pdf import *
 
# PDF文書の作成
pdf = PdfDocument()
 
# ページを追加する
page = pdf.Pages.Add()
 
# 現在の描画状態を保存する
state = page.Canvas.Save()
 
# 線の開始X座標とY座標を指定する
x = 100.0  
y = 50.0   
 
# 線の長さを指定する
width = 300.0  
 
# 色と太さを指定したPDFペンの作成
pen = PdfPen(PdfRGBColor(Color.get_Blue()), 2.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)
 
# PDF文書を保存する
pdf.SaveToFile("DrawLines.pdf")
pdf.Close()
pdf.Dispose()
```
![PDFlines.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2811193/9d12cf4d-522f-44fb-4b99-c7ecfe0685b4.png)



## PythonでPDFに矩形を描画する
**`PdfPageBase.Canvas.DrawRectangle()`** メソッドを使用すると、 PDF ページ上の指定した位置に矩形を描画することができます。このメソッドに異なるパラメータを渡すことで、矩形のサイズや塗りつぶしの色などを指定することができます。

>Pythonのコード：
```python
from spire.pdf.common import *
from spire.pdf import *
 
# PDF文書の作成
pdf = PdfDocument()
 
# ページを追加する
page = pdf.Pages.Add()
 
# 現在の描画状態を保存する
state = page.Canvas.Save()
 
# 色と太さを指定したPDFペンの作成
pen = PdfPen(PdfRGBColor(Color.get_Blue()), 1.5)
 
# ペンを使ってページに長方形を描く
page.Canvas.DrawRectangle(pen, RectangleF(PointF(20.0, 60.0), SizeF(150.0, 90.0)))
 
# 線形グラデーションブラシを作成する
linearGradientBrush = PdfLinearGradientBrush(PointF(220.0, 60.0), PointF(350.0, 180.0), PdfRGBColor(Color.get_Green()), PdfRGBColor(Color.get_Pink()))
 
# 線形グラデーションブラシで塗りつぶし矩形を描く 
page.Canvas.DrawRectangle (linearGradientBrush, RectangleF(PointF(220.0, 60.0), SizeF(150.0, 90.0)))
 
# 以前に保存した描画状態を復元する
page.Canvas.Restore(state)
 
# PDF文書を保存する
pdf.SaveToFile("DrawRectangle.pdf")
pdf.Close()
pdf.Dispose()
```
![PDFrectangle.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2811193/31ea029d-6cb0-5295-4c32-e06a1ae7763b.png)



## PythonでPDFに楕円を描く
PDF ページ上の指定した位置に楕円を描くには、 **`PdfPageBase.Canvas.DrawEllipse()`** メソッドを使用します。異なるPDFペンやブラシを指定することで、異なるスタイルの楕円を描くことができます。

>Pythonのコード：
```python
from spire.pdf.common import *
from spire.pdf import *
 
# PDF文書の作成
pdf = PdfDocument()
 
# ページを追加する
page = pdf.Pages.Add()
 
# 現在の描画状態を保存する
state = page.Canvas.Save()
 
# Penオブジェクトの作成
pen = PdfPens.get_Violet()
 
# ペンで楕円を描く
page.Canvas.DrawEllipse(pen, 30.0, 60.0, 150.0, 100.0)
 
# 塗りつぶし用のBrushオブジェクトの作成
brush = PdfSolidBrush(PdfRGBColor(Color.get_Violet()))
 
# 塗りつぶされた楕円形を描く
page.Canvas.DrawEllipse(brush, 220.0, 60.0, 150.0, 100.0)
 
# 以前に保存した描画状態を復元する
page.Canvas.Restore(state)
 
# PDF文書を保存する
pdf.SaveToFile("DrawEllipse.pdf")
pdf.Close()
pdf.Dispose()
```
![PDFellipse.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2811193/0b6e35b4-1432-da13-3bcd-6d0bdc0e3606.png)
* * *

以下のリンクをクリックし、1ヶ月の無料ライセンスをリクエストすることで、生成されたドキュメントの赤い透かしを取り除くことができます：

https://www.e-iceblue.com/TemLicense.html