ソースに絡まるエスカルゴ

貧弱プログラマの外部記憶装置です。

【python/reportlab】pythonでpdfを出力する

 ふと「pythonでpdfを出力できたりしないのかな」と思って調べたところ、どんぴしゃなライブラリがあったので今回はその「reportlab」ライブラリの紹介になります。


 では、始めます。


1:reportlabのインストール方法
 インストール方法は簡単で、pipが入っていれば以下のコマンドでインストールできます。

$ pip install reportlab

 ちゃんとインストールできているかについは、PowerShellなどでpythonを起動させ、以下のようにバージョン表示ができればOKです。

$ python
>>> import reportlab
>>> reportlab.__version__
'4.0.4'


2:reportlabでpdfを出力する
 ライブラリを使って簡単なpdfを出力してみます。以下のコードを実行してみてください。

・pdf_test.py

#-*- coding:utf-8 -*-
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import A4, portrait

PDF_FILE_PATH = "./test.pdf"

# メイン関数
def main():
  print("--- start ---")
  create_pdf(PDF_FILE_PATH)
  print("--- end ---")


# pdfを作成する関数
def create_pdf(file_path):
  # 保存先ファイル(A4)
  pdf_canvas = canvas.Canvas(file_path, pagesize=portrait(A4))

  # 各種情報を設定
  pdf_canvas.setAuthor("author")   # 作者
  pdf_canvas.setTitle("title")     # 表題
  pdf_canvas.setSubject("subject") # 件名

  # Hello World!の文字を書き込む
  pdf_canvas.drawString(10, 800, "Hello World!")

  pdf_canvas.save() # pdfを保存


if __name__ == '__main__':
  main()

 実行すると「test.pdf」というファイルが作成されます。開くと中身は以下のようにHello World!の文字のみになっています。

 またpdfのプロパティを見てみると、ちゃんと設定した作者名などが設定されているのがわかります。

 ちなみに「drawString」関数で文字を表示させているところは用紙の左下を原点としているため、注意が必要になります。


 以上がreportlabライブラリを使ってpdfを出力させる方法になります。

 今回はとりあえずpdfを出力させてみただけですが、他にも画像を埋め込んだり、表を作成する機能もあるようなので、その辺りについてはまた別の記事にしようかと思います。

 このライブラリを使いこなせればpdf出力をかなり自由にできるようになりそうなので、使っていきたいです。


・参考資料