CodeGym /コース /Python SELF JA /レポート自動化のためのテキスト付きPDF作成の基礎

レポート自動化のためのテキスト付きPDF作成の基礎

Python SELF JA
レベル 44 , レッスン 2
使用可能

1. ReportLabの基本操作

Canvasの利用

ReportLabでPDFを作成するメインツールはcanvasクラスです。これにより、テキスト、線、四角形、その他のグラフィック要素を追加するためのメソッドが提供されます。

簡単なテキスト付きPDFの作成

Python

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

# 新しいPDFファイルを作成
pdf_file = canvas.Canvas("basic_report.pdf", pagesize=A4)
width, height = A4

# テキストを追加
pdf_file.setFont("Helvetica", 12)  # フォントとサイズを設定
pdf_file.drawString(100, height - 100, "こんにちは!ReportLabを使って作成されたレポートです。")

# PDFを保存して閉じる
pdf_file.save()

この例では、"こんにちは!ReportLabを使って作成されたレポートです。"というテキストを含む簡単なPDFファイルが1ページ目に作成されます。

2. PDFにテキストを追加する

ReportLabは、テキストのサイズ、フォント、色などを柔軟にカスタマイズできます。この機能は、ヘッダー、サブタイトル、メインテキストを分けて設定できるので構造化されたレポートの作成に重要です。

フォントとテキストサイズの設定

setFont()メソッドを使用してフォントとテキストサイズを設定できます。ReportLabは、HelveticaTimes-RomanCourierなどの標準フォントをサポートしています。

Python

pdf_file.setFont("Helvetica-Bold", 16)  # 太字フォント
pdf_file.drawString(100, height - 50, "販売レポート")  # タイトル

テキストの色を変更

ReportLabは、setFillColorRGB()メソッドを使用してRGB値(0から1の範囲)でテキストの色を設定できます。

Python

pdf_file.setFillColorRGB(0, 0, 1)  # 青色
pdf_file.drawString(100, height - 150, "このテキストは青色です。")

3. テキストブロックと複数行のテキストの操作

テキストが長い場合、drawString()を使い各行の座標を指定してブロック形式にすることができます。ただし、テキストを自動的に改行するにはdrawText()TextObjectを使用する方が便利です。

TextObjectを使った複数行テキストの追加

Python

text = """
2023年売上レポート。
このレポートには、販売データの詳細、分析、および予測が含まれます。
"""

# テキストオブジェクトを作成
text_object = pdf_file.beginText(100, height - 200)
text_object.setFont("Helvetica", 12)
text_object.setFillColorRGB(0, 0, 0)

# テキストを追加
for line in text.split("\n"):
    text_object.textLine(line)

pdf_file.drawText(text_object)

この例では、TextObjectを使って各行を自動的に改行するテキストオブジェクトが作成されます。

4. 複数ページのレポートの作成

複数ページのレポートを作成することで、より多くのデータを収容し、読みやすいドキュメント構造を作成できます。ReportLabで新しいページに移動するにはshowPage()メソッドを使用します。

複数ページPDFの作成

Python

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

# PDFを作成
pdf_file = canvas.Canvas("multi_page_report.pdf", pagesize=A4)
width, height = A4

# ページ1
pdf_file.setFont("Helvetica-Bold", 16)
pdf_file.drawString(100, height - 100, "ページ1: 序章")
pdf_file.setFont("Helvetica", 12)
pdf_file.drawString(100, height - 130, "このレポートの最初のページです。")
pdf_file.showPage()  # 新しいページに移動

# ページ2
pdf_file.setFont("Helvetica-Bold", 16)
pdf_file.drawString(100, height - 100, "ページ2: データ")
pdf_file.setFont("Helvetica", 12)
pdf_file.drawString(100, height - 130, "このレポートの2ページ目です。")

# PDFを保存して閉じる
pdf_file.save()

この例では、それぞれ独自のタイトルとテキストを持つ2ページから成るPDFが作成されます。メソッドshowPage()は現在のページを終了し、新しいページを開始します。

5. PDFに動的データを追加

ReportLabを使うことで、レポート自動化のためのリストや辞書など、動的データをPDFに追加できます。これは、テーブルやリストデータを含む定期的に更新されるレポートを作成する際に役立ちます。

リストからデータを追加

Python

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

data = [
    {"月": "1月", "販売": 200},
    {"月": "2月", "販売": 300},
    {"月": "3月", "販売": 250},
]

pdf_file = canvas.Canvas("sales_report.pdf", pagesize=A4)
width, height = A4

# タイトル
pdf_file.setFont("Helvetica-Bold", 16)
pdf_file.drawString(100, height - 100, "販売レポート")

# データを追加
pdf_file.setFont("Helvetica", 12)
y_position = height - 150
for item in data:
    line = f"{item['月']}: 販売 = {item['販売']}"
    pdf_file.drawString(100, y_position, line)
    y_position -= 20

# PDFを保存
pdf_file.save()

このコードでは、月ごとの販売データを各行に追加し、PDFファイルを作成します。

コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION