ReportLabを使用すると、Pythonを使用してPDFにテキストを挿入することができます。
本記事では、ReportLabによる、テキストを改行する方法について、詳しくご説明します。
ReportLabとは
ReportLabは、Pythonを使用してPDFを操作するための外部ライブラリの1つです。
PDF操作用ライブラリは他にも、PyPDF4やPDFMinerなどいくつか存在します。
それぞれのライブラリの用途は、以下の通りです。
ライブラリ | 用途 |
---|---|
ReportLab | ・PDFの新規作成 |
PDFMiner | ・テキストの抽出 |
PyPDF4 | ・画像の抽出 ・PDFファイルの結合や分割 ・しおり(目次)の追加 |
本記事では、ReportLabによる、テキストを改行する方法をご紹介します。
ReportLabのインストール
「ReportLab」は、以下コマンドを入力することで、インストールすることができます。
コマンドの入力は、コマンドプロンプトあるいはターミナルから行います。
pip install reportlab
動作確認として、試しに以下を入力します。
from reportlab.pdfgen import canvas
上記を入力してもエラーが発生しなければ、正常にインストールされています。
テキストを改行する方法
Paragraph()で作成した以下テキストを例に、改行方法をご紹介します。
#input
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import A4, portrait, landscape
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.cidfonts import UnicodeCIDFont
from reportlab.lib.units import mm
import os
from reportlab.lib.colors import deeppink, yellow
from reportlab.platypus import Paragraph, Spacer, PageBreak, FrameBreak, SimpleDocTemplate
from reportlab.lib.styles import ParagraphStyle, ParagraphStyle
from reportlab.lib.styles import getSampleStyleSheet
from reportlab.lib.enums import TA_JUSTIFY, TA_RIGHT, TA_CENTER, TA_LEFT
# A4(横)の新規PDFファイルを作成
p = SimpleDocTemplate("sample.pdf", pagesize=landscape(A4))
# スタイルの指定
styles = getSampleStyleSheet()
my_style = styles['Normal']
my_style.fontSize = 14*mm
my_style.leading = 20*mm # 段落内の行間
story = [Spacer(1, 10 * mm)]
# テキストの挿入
text = "When I find myself in times of trouble "
text += "Mother Mary comes to me "
text += "Speaking words of wisdom "
text += "Let it be "
text += "And in my hour of darkness "
text += "She is standing right in front of me "
text += "Speaking words of wisdom "
text += "Let it be"
story.append( Paragraph(text, my_style) )
story.append( Spacer(1, 3 * mm) )
p.build(story)
通常Pythonで改行するには「\n」を使用しますが、ReportLabで改行するには「<br/>\n」を使用します。(HTMLタグと同様です)
以下、各改行位置に上記を記載した結果をご紹介します。
(出力の都合上、フォントサイズと行間も微調整しています。)
#input
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import A4, portrait, landscape
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.cidfonts import UnicodeCIDFont
from reportlab.lib.units import mm
import os
from reportlab.lib.colors import deeppink, yellow
from reportlab.platypus import Paragraph, Spacer, PageBreak, FrameBreak, SimpleDocTemplate
from reportlab.lib.styles import ParagraphStyle, ParagraphStyle
from reportlab.lib.styles import getSampleStyleSheet
from reportlab.lib.enums import TA_JUSTIFY, TA_RIGHT, TA_CENTER, TA_LEFT
# A4(横)の新規PDFファイルを作成
p = SimpleDocTemplate("sample.pdf", pagesize=landscape(A4))
# スタイルの指定
styles = getSampleStyleSheet()
my_style = styles['Normal']
my_style.fontSize = 12*mm
my_style.leading = 16*mm # 段落内の行間
story = [Spacer(1, 10 * mm)]
# テキストの挿入
text = "When I find myself in times of trouble "
text += "<br/>\nMother Mary comes to me "
text += "<br/>\nSpeaking words of wisdom "
text += "<br/>\nLet it be "
text += "<br/>\nAnd in my hour of darkness "
text += "<br/>\nShe is standing right in front of me "
text += "<br/>\nSpeaking words of wisdom "
text += "<br/>\nLet it be"
story.append( Paragraph(text, my_style) )
story.append( Spacer(1, 3 * mm) )
p.build(story)
text + = で区切っていたそれぞれの文が、「<br/>\n」により、改行されたことが分かるかと思います。
まとめ
この記事では、ReportLabによる、テキストを改行する方法について、ご説明しました。
本記事を参考に、ぜひ試してみて下さい。
参考
Python学習用おすすめ教材
Pythonの基本を学びたい方向け
統計学基礎を学びたい方向け
Pythonの統計解析を学びたい方向け
おすすめプログラミングスクール
Pythonをはじめ、プログラミングを学ぶなら、TechAcademy(テックアカデミー)がおすすめです。
私も入っていますが、好きな時間に気軽にオンラインで学べますので、何より楽しいです。
現役エンジニアからマンツーマンで学べるので、一人では中々続かない人にも、向いていると思います。
無料体験ができますので、まずは試してみてください!