CodeGym /コース /Python SELF JA /ReportLabを使ったPDF文書のテキストとヘッダーのスタイリング

ReportLabを使ったPDF文書のテキストとヘッダーのスタイリング

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

1. PDFにテキストとヘッダーを追加する基本

ReportLabでは、canvasオブジェクトを使用してテキストを追加するよ。これを使えば、フォント、色、サイズ、テキストの位置を設定できる。

ヘッダーとテキストを含むシンプルなPDFを作成する

Python

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は、HelveticaTimes-RomanCourierのような標準フォントをサポートしてるよ。setFont()を使って、フォントスタイル(ノーマル、ボールド、イタリック)やサイズも指定できる!

Python

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の範囲)でテキストの色を調整できる!

Python

pdf_file.setFillColorRGB(0.2, 0.4, 0.6)  # 青色
pdf_file.setFont("Helvetica", 12)
pdf_file.drawString(100, height - 110, "このテキストは青色です。")

reportlab.lib.colorsのプリセット色も使えるよ!

Python

from reportlab.lib import colors

pdf_file.setFillColor(colors.red)
pdf_file.drawString(100, height - 140, "赤色のテキスト")

3. テキストの配置と複数行テキスト

テキストが長い場合は、複数行で表示した方がいいね。ReportLabには、TextObjectクラスがあって、自動で改行してくれる。

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

Python

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を使った段落作成

Python

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()でベーススタイルを取得してカスタマイズ可能。

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