IT・技術研修ならCTC教育サービス

サイト内検索 企業情報 サイトマップ

研修コース検索

コラム

ゼロから歩くPythonの道

CTC 教育サービス

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes 

第38回 Pythonのライブラリ「ReportLab」でPDFを作る方法 ~文字、画像、線、図形を描画したい編~ (菱沼佑香) 2022年10月

こんにちは、吉政創成 菱沼です。
今回も「いちばんやさしいPython入門教室(大澤 文孝氏著) 」を片手に勉強していきます。
前回、前々回とPDFを作るライブラリ、ReportLabを使うにあたっての基本的な手順のうち、インポート方法とフォントの指定方法、PDFの用紙サイズ、向きの指定方法について学習しました。
今回は描画の部分を学んでいきたいと思います。

サンプルコード

前回も掲載していますが、一応今回もサンプルコードの画像を載せておきます。
今回はこの中の、「PDFを作る」のあたりの学習になります。

fig01

※出力結果の画像は、今回割愛します。気になる方は前々回のコラムをご確認ください。

文字をPDFに描画する方法

さて作ったPDFのベースに文字を描画するには、登録したフォントとサイズを指定すること、そして文字を書き始める場所も一緒に指定してあげる必要があるようです。

-----
P.243
フォントの選択にはsetFontメソッドを使います。setFontメソッドでは、1番目の引数に「あらかじめregsterFontメソッドで登録しておいたフォントの名前のうちの1つ」、2番目の引数にはそのフォントの「サイズ」を指定します。(中略)
setFontでフォントを指定したら、次にdrawStringメソッドを実行して、文字を描画します。drawStringメソッドの引数は、先頭から順に「X座標、Y座標、描画したい文字列」です。PDFの座標は1番左下が「0,0」で、上に向かってY座標、右に向かってX座標が伸びるという座標系です。
(中略)ミリメートルで指定したいときには、次の例にあるように、X座標、Y座標にそれぞれ「unit.mm」をかけ算します。この例では用紙の左端から10㎜、用紙の下から270㎜のところに「はじめてのPDF」という文字列を表示します。
-----

ということで、下がサンプルコードでの該当箇所です。

fig02

まず上の行が登録したフォント使う事、そして文字サイズの宣言になります。
次の行が用紙のどの位置から、指定の文字を描画するかという部分になります。
複数の文字列を描画したい場合は、同じフォントを使う限り、毎回setFontを実行する必要はないそうです。
ということで、3行の文章を追加してみました。

fig03

この実行結果がこちらです。

fig04

問題なく同じ書式が利用されています。
ちなみに、描画の座標はついつい上からと考えたくなりますが、左下が始点(X=0,Y=0)となります。

そしてここまでかけたら最後に保存するために「saveメソッド」を呼び出します。

fig05

これを忘れるとpdfができないということなので、お忘れなく。

画像や線、図形を入れる方法

ところで、ReportLabでも線や図形の描画ができるのだそうです。せっかくなのでやってみたいと思います。結果の画像はまとめて最後にお見せします。

画像の挿入

drawImage()を使えば挿入できるようです。以下を追記しました。

fig06

今回はデスクトップに作ったpicフォルダの中に保存した画像を使用しています。
パスの指定は前回のPDF保存場所で説明したのと同じ方法(OSモジュールを使用)です。振り返りたい方は前回のコラムをご確認ください。

線を描画する

line(x1,y1,x2,y2)で、始点と終点を指定すればできるようです。以下を追加しました。

fig07

tableを使って頑張れば表の描画もできるようです。参考サイトをご参照ください。

【reportlab】PDF生成用Pythonライブラリ 使い方② 表の描画
PythonのPDFライブラリ「ReportLab」の使い方(表描画、線・塗りつぶしの色、線の太さ、破線の指定)

図形を描く

四角(rect)、円(circle)と作れるようです。詳しくは参考URLをご確認いただきたいのですが、ここでは四角形だけ試してみました。

fig08

【Python】PDFを新規作成・文字の書き込み・図形の描画をする方法(reportlab)

ということで、文字、画像、線、四角形を描画した結果がこちらです。

fig09

それでは今回はこちらで終了です。お付き合いいただきありがとうございました。

 


 

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes