Photoruction工事中!

Photoructionの開発ブログです!

PDFの生成ができるライブラリReportLabの使い方

はじめに

こんにちは、AIエンジニアの志賀です。

このたびはPDFの生成ができるライブラリReportLabの使い方についての技術ブログをご覧いただきありがとうございます。

PythonReportLabというライブラリを使用すると、プログラムからPDFドキュメントを生成できます。

この記事では、ReportLabの基本的な使い方を解説します。

ReportLabを使ってPDFを生成する

環境のセットアップ

まず、PythonReportLabをセットアップします。

Pythonをインストール済みであることを確認し、ReportLabを以下のコマンドでインストールします。

pip install reportlab

基本的なPDFの生成

基本的なPDFの生成は以下のステップで行います。

まず、Pythonスクリプトを作成し、必要なモジュールをインポートします。

from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas

# PDFドキュメントの生成
c = canvas.Canvas("basic_pdf.pdf", pagesize=letter)

テキストを追加するには、以下のように drawString メソッドを使用します。

c.drawString(100, 750, "ReportLab")

このコードは、座標 (100, 750) にテキストを追加します。

次に、新しいページを追加するには以下のコードを使用します。

c.showPage()

これにより、新しいページが生成されます。テキストの他にもさまざまな要素を追加できます。

フォントとスタイルの設定

フォントとスタイルを設定することで、テキストをカスタマイズできます。

フォントの設定は以下のように行います。

from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas
from reportlab.lib import fonts

c = canvas.Canvas("styled_pdf.pdf", pagesize=letter)
c.setFont("Helvetica-Bold", 12)
c.drawString(100, 750, "Customized Text")

このコードは "Helvetica-Bold" フォントを使用してテキストを表示します。

テーブルの作成

テーブルはデータを整然と表示するのに役立ちます。

以下はテーブルを作成する基本的なステップです。

from reportlab.lib.pagesizes import letter
from reportlab.platypus import SimpleDocTemplate, Table, TableStyle
from reportlab.lib import colors

doc = SimpleDocTemplate("table_pdf.pdf", pagesize=letter)
data = [["col1", "col2", "col3"],
        [1, 2, 3],
        [4, 5, 6]]

table = Table(data)
table.setStyle(TableStyle([('BACKGROUND', (0, 0), (-1, 0), colors.grey),
                           ('TEXTCOLOR', (0, 0), (-1, 0), colors.whitesmoke),
                           ('ALIGN', (0, 0), (-1, -1), 'CENTER'),
                           ('FONTNAME', (0, 0), (-1, 0), 'Helvetica-Bold'),
                           ('BOTTOMPADDING', (0, 0), (-1, 0), 12),
                           ('BACKGROUND', (0, 1), (-1, -1), colors.beige),
                           ('GRID', (0, 0), (-1, -1), 1, colors.black)]))

elements = [table]
doc.build(elements)

このコードは、データを含むテーブルを生成します。

図形の追加

ReportLabを使用して、PDFに図形を追加できます。

以下は簡単な例です。

from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas

c = canvas.Canvas("shapes_pdf.pdf", pagesize=letter)

# 線の描画
c.line(100, 100, 200, 200)

# 円の描画
c.circle(300, 150, 50)

# 四角形の描画
c.rect(400, 100, 100, 50)

c.save()

このコードは、線、円、四角形を描画し、PDFに保存します。

画像の挿入

画像の挿入も簡単です。

まず、PILライブラリを使用して画像を読み込みます。

from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas
from reportlab.lib.utils import ImageReader
from PIL import Image

c = canvas.Canvas("image_pdf.pdf", pagesize=letter)

# 画像読み込み
image = Image.open("example.jpg")

# ReportLab ImageReaderに変換
image_reader = ImageReader(image)

# 画像を描画
c.drawImage(image_reader, 100, 100, width=200, height=150)

c.save()

このコードでは、"example.jpg" という画像をPDFに挿入しています。

PDFファイルの保存と出力

生成したPDFを保存するには、 save メソッドを使用します。

既にいくつかの例で使用していますが、以下に再掲します。

c.save()

終わりに

以上が、PDFの生成ができるライブラリReportLabの基本的な使い方の解説でした。

いかがでしたでしょうか。

是非、Python開発でReportLabを使って、PDFの作成をしてみてください。

株式会社フォトラクションでは一緒に働く仲間を募集しています