【Python】PDF挿入用のウィジェットを使用する|ReportLab基礎

PDF挿入用のウィジェットを使用する|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.graphics.widgetbase.Face()

reportlab.pdfgen」クラスのcanvas.Canvas()で用意したPDFに対して、「reportlab.graphics.widgetbase」クラスのFace()関数を使用することで、顔マークのウィジェットを使用することができます。

また「reportlab.graphics」クラスのrenderPDFを使用することで、PDFに挿入することができます。

上記関数の使用例を以下にご紹介します。

#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 import colors
from reportlab.graphics.shapes import Drawing
from reportlab.graphics import widgetbase
from reportlab.graphics import renderPDF

# A4(横)の新規PDFファイルを作成
p = canvas.Canvas("sample.pdf", pagesize=landscape(A4))

# 使用ウィジェットの指定
# 笑顔
drawing = Drawing(300, 600)
f1 = widgetbase.Face()
f1.skinColor = colors.yellow
f1.mood = "happy"
f1.x, f1.y = 20*mm, 40*mm
f1.size = 100*mm
drawing.add(f1)

# 悲しい顔
f2 = widgetbase.Face()
f2.skinColor = colors.yellow
f2.mood = "sad"
f2.x, f2.y = 150*mm, 40*mm
f2.size = 100*mm
drawing.add(f2)

# PDFに挿入
x = y = 10*mm
renderPDF.draw(drawing, p, x, y, showBoundary=False)

# 保存
p.showPage()
p.save()
ウィジェットの挿入1

笑顔(左)と悲しい顔(右)を挿入しました。

reportlab.graphics.widgets.signsandsymbols

reportlab.pdfgen」クラスのcanvas.Canvas()で用意したPDFに対して、「reportlab.graphics.widgets」クラスのsignsandsymbolsを使用することで、基本マークのウィジェットを使用することができます。

使用例を以下にご紹介します。

#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 import colors
from reportlab.graphics.shapes import Drawing
from reportlab.graphics.widgets import signsandsymbols
from reportlab.graphics import renderPDF

# A4(横)の新規PDFファイルを作成
p = canvas.Canvas("sample.pdf", pagesize=landscape(A4))

# 使用ウィジェットの指定
drawing = Drawing(300, 600)
ne = signsandsymbols.NoEntry()
ds = signsandsymbols.DangerSign()
fd = signsandsymbols.FloppyDisk()
ns = signsandsymbols.NoSmoking()
tb = signsandsymbols.Tickbox()
ss = signsandsymbols.StopSign()
ne.x, ne.y, ne.size =  10*mm,  10*mm, 70*mm
ds.x, ds.y, ds.size = 100*mm,  10*mm, 70*mm
fd.x, fd.y, fd.size =  10*mm, 100*mm, 70*mm
ns.x, ns.y, ns.size = 100*mm, 100*mm, 70*mm
tb.x, tb.y, tb.size = 190*mm,  10*mm, 70*mm
ss.x, ss.y, ss.size = 190*mm, 100*mm, 70*mm
drawing.add(ne)
drawing.add(ds)
drawing.add(fd)
drawing.add(ns)
drawing.add(tb)
drawing.add(ss)

# PDFに挿入
x = y = 10*mm
renderPDF.draw(drawing, p, x, y, showBoundary=False)

# 保存
p.showPage()
p.save()
ウィジェットの挿入2

代表的な6種類のウィジェットを使用・PDFに挿入しました。

まとめ

この記事では、ReportLabを使用した、PDF挿入用のウィジェットを使用する方法について、ご説明しました。

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

参考

Python学習用おすすめ教材

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

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

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

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

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

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

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

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

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