1. PDFにテキストとヘッダーを追加する基本
ReportLabでは、canvas
オブジェクトを使用してテキストを追加するよ。これを使えば、フォント、色、サイズ、テキストの位置を設定できる。
ヘッダーとテキストを含むシンプルなPDFを作成する
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import A4
# 新しいPDFを作成
pdf_file = canvas.Canvas("styled_text.pdf", pagesize=A4)
width, height = A4
# ヘッダーを追加
pdf_file.setFont("Helvetica-Bold", 20)
pdf_file.drawString(100, height - 100, "売上レポート")
# メインテキストを追加
pdf_file.setFont("Helvetica", 12)
pdf_file.drawString(100, height - 130, "この文書には最新の四半期の売上情報が含まれています。")
# PDFを保存
pdf_file.save()
このコードは、ヘッダーとメインテキストが含まれたPDFを生成するよ。setFont()
メソッドを使って、フォントとテキストサイズを設定してる。
2. テキストのスタイリングとフォーマット
ReportLabでは、色、フォント、テキストサイズをカスタマイズできる!おしゃれなヘッダーや内容が作れるから、文書を読みやすく構造化できるよ。
フォントとテキストサイズを変更する
ReportLabは、Helvetica
、Times-Roman
、Courier
のような標準フォントをサポートしてるよ。setFont()
を使って、フォントスタイル(ノーマル、ボールド、イタリック)やサイズも指定できる!
pdf_file.setFont("Helvetica-Bold", 18) # ボールドフォントのヘッダー
pdf_file.drawString(100, height - 50, "メインヘッダー")
pdf_file.setFont("Helvetica-Oblique", 14) # イタリックなサブヘッダー
pdf_file.drawString(100, height - 80, "サブヘッダー: 四半期の概要")
テキストの色を変更する
setFillColorRGB()
メソッドを使えば、RGB値(0から1の範囲)でテキストの色を調整できる!
pdf_file.setFillColorRGB(0.2, 0.4, 0.6) # 青色
pdf_file.setFont("Helvetica", 12)
pdf_file.drawString(100, height - 110, "このテキストは青色です。")
reportlab.lib.colors
のプリセット色も使えるよ!
from reportlab.lib import colors
pdf_file.setFillColor(colors.red)
pdf_file.drawString(100, height - 140, "赤色のテキスト")
3. テキストの配置と複数行テキスト
テキストが長い場合は、複数行で表示した方がいいね。ReportLabには、TextObject
クラスがあって、自動で改行してくれる。
TextObject
を使った複数行テキスト
text = """
レポートには、過去3か月の売上分析が含まれています。
変更点と、それが会社全体の成長に与える影響を検討しています。
"""
text_object = pdf_file.beginText(100, height - 180)
text_object.setFont("Helvetica", 12)
text_object.setFillColor(colors.darkblue)
for line in text.split("\n"):
text_object.textLine(line)
pdf_file.drawText(text_object)
このコードは、複数行のテキストブロックを作成する例だよ。各行がPDFに追加される。TextObject
を使うと長いテキストの自動フォーマットが簡単!
4. 段落を使ったテキストのスタイリング
reportlab.platypus
モジュールのParagraph
クラスを使えば、HTMLタグ(例:<b>
、<i>
、<u>
)に対応したスタイリングテキストを追加できる!段落のスタイリングや余白も簡単にできちゃう。
Paragraph
を使った段落作成
from reportlab.lib.pagesizes import A4
from reportlab.lib.styles import getSampleStyleSheet
from reportlab.platypus import SimpleDocTemplate, Paragraph
# PDFの設定
doc = SimpleDocTemplate("styled_paragraphs.pdf", pagesize=A4)
styles = getSampleStyleSheet()
elements = []
# ボールドとイタリックなテキストの段落を作成
text = "売上レポート
2023年の四半期レポート"
paragraph = Paragraph(text, styles["Title"])
elements.append(paragraph)
# メインテキストの追加
main_text = """
このレポートには、最新の四半期における売上データの要点が含まれています。
また、売上が会社全体の収益に与える影響の分析も行っています。
"""
paragraph = Paragraph(main_text, styles["BodyText"])
elements.append(paragraph)
# PDFを生成
doc.build(elements)
ここでは、Paragraph
を使ってフォーマット済みテキストを追加してるよ。HTMLタグを使ったスタイリング(ボールドとかイタリック)が便利。getSampleStyleSheet()
でベーススタイルを取得してカスタマイズ可能。
GO TO FULL VERSION