【Python】テキストボックスの挿入と編集|ReportLab基礎

テキストボックスの挿入と編集|ReportLab基礎_アイキャッチ プログラミング

※ 当サイトはアフィリエイト広告を利用しています。

levtech-ad
スポンサーリンク

ReportLabを使用すると、Pythonを使用してPDFにテキストボックスを挿入することができます。

本記事では、ReportLabを使用した、PDFへのテキストボックスの挿入・編集方法について、詳しくご説明します。

こんな人に読んでほしい
  • Pythonを使用したPDFの操作方法を知りたい人
  • PDFへのテキストボックスの挿入・編集方法を知りたい人
levtech-ad

ReportLabとは

ReportLabは、Pythonを使用してPDFを操作するための外部ライブラリの1つです。

PDF操作用ライブラリは他にも、PyPDF4PDFMinerなどいくつか存在します。

それぞれのライブラリの用途は、以下の通りです。

ライブラリ用途
ReportLab・PDFの新規作成
PDFMiner・テキストの抽出
PyPDF4・画像の抽出
・PDFファイルの結合や分割
・しおり(目次)の追加

本記事では、ReportLabによる、PDFへのテキストボックスの挿入・編集方法をご紹介します。

ReportLabのインストール

「ReportLab」は、以下コマンドを入力することで、インストールすることができます。

コマンドの入力は、コマンドプロンプトあるいはターミナルから行います。

pip install reportlab

動作確認として、試しに以下を入力します。

from reportlab.pdfgen import canvas

上記を入力してもエラーが発生しなければ、正常にインストールされています。

テキストボックスの挿入・編集

reportlab.platypus」クラスのSimpleDocTemplate()で用意したPDFに対して、Paragraph()を使用することで、テキストボックス(段落)を指定することができます。

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)
テキストボックスの挿入1

文章が自動的に改行されるテキストボックスを挿入しました。

文字揃え

Paragraph()の第二引数に指定するスタイルとして、「style.alignment」を指定することで、文字揃えを変更することができます。

右揃えは「TA_RIGHT」、中央揃えは「TA_CENTER」を指定します。

#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 # 段落内の行間
my_style.alignment      = TA_RIGHT

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)
テキストボックスの挿入2

背景

Paragraph()の第二引数に指定するスタイルとして、「style.backColor」を指定することで、背景の色を変更することができます。

#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 # 段落内の行間
my_style.backColor = yellow

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)
テキストボックスの挿入3

枠線

Paragraph()の第二引数に指定するスタイルとして、「style.borderWidth」を指定することで、枠線の太さを変更することができます。

また、「style.borderPadding」で枠線と文章との間隔を、「style.borderColor」で枠線の色を、「style.borderRadius」で枠線の角の径をそれぞれ指定することができます。

#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 # 段落内の行間
my_style.backColor = yellow
my_style.borderPadding = (10*mm, 10*mm, 10*mm) # 上、左右、下のPadding
my_style.borderRadius = 10*mm
my_style.borderWidth = 2*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)
テキストボックスの挿入4

まとめ

この記事では、ReportLabを使用した、PDFへのテキストボックスの挿入・編集方法について、ご説明しました。

本記事を参考に、ぜひ試してみて下さい。

参考

Python学習用おすすめ教材

Pythonの基本を学びたい方向け

統計学基礎を学びたい方向け

Pythonの統計解析を学びたい方向け

おすすめプログラミングスクール

Pythonをはじめ、プログラミングを学ぶなら、TechAcademy(テックアカデミー)がおすすめです。

私も入っていますが、好きな時間に気軽にオンラインで学べますので、何より楽しいです。

現役エンジニアからマンツーマンで学べるので、一人では中々続かない人にも、向いていると思います。

無料体験ができますので、まずは試してみてください!

\まずは無料体験!/
スポンサーリンク
タイトルとURLをコピーしました