Django Girls and Boys 備忘録

Python、Selenium、Django、java、iPhoneアプリ、Excelマクロなどで気付いたこと、覚えておきたいことなどを載せていきます。

【Python】PythonでPDFファイルを生成する方法:「reportlab」ライブラリを使った基本ガイド

 

 PythonでPDFファイルを生成するための強力なライブラリの一つが、「reportlab」です。

このライブラリを使うと、テキストやグラフィックス、画像などを含むPDFを簡単に作成できます。

 

この記事では、「reportlab」を使った基本的なPDF作成方法について、ステップバイステップで解説します。

 

1.reportlabのインストール

 

 

まず、「reportlab」ライブラリをインストールする必要があります。「pip」を使って簡単にインストールできます。

 

pip install reportlab

 

インストールが完了したら、Pythonのコードで「reportlab」を使う準備が整いました。

 

 

2.最初のPDFを作成

 

 

次に、簡単なPDFを作成してみましょう。ここでは、テキストを含む基本的なPDFを作成します。

 

from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas

# PDFファイルを作成する
def create_pdf(filename):
    # Canvasオブジェクトを作成
    c = canvas.Canvas(filename, pagesize=letter)

    # テキストを追加
    c.drawString(100, 750, "Hello, ReportLab!")

    # PDFを保存
    c.save()

# PDFを生成
create_pdf("hello_reportlab.pdf")

 

 

上記のコードでは、「canvas.Canvas」を使ってPDFを作成し、「drawString」メソッドで指定した位置にテキストを描画しています。

「save」メソッドでPDFを保存します。

 

このコードを実行すると、「hello_reportlab.pdf」というファイルが作成され、その中に「Hello, ReportLab!」というテキストが含まれるPDFが生成されます。

 

3.文字のフォントやサイズを変更

 

 

「reportlab」では、テキストのフォントやサイズも簡単に変更できます。以下のコードでは、フォントとフォントサイズを変更してみましょう。

 

from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas

def create_custom_pdf(filename):
    c = canvas.Canvas(filename, pagesize=letter)

    # フォントとサイズを設定
    c.setFont("Helvetica", 16)

    # テキストを追加
    c.drawString(100, 750, "This is a custom font size!")

    c.save()

create_custom_pdf("custom_font_size.pdf")

 

ここでは、「setFont」メソッドを使って「Helvetica」フォントを16ポイントで設定しています。フォントの種類やサイズは任意に変更できます。

 

 

4.図形を描画

 

 

PDFにはテキストだけでなく、線や長方形、円などの図形を描画することもできます。以下は、長方形と円を描画する例です。

 

from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas

def create_graphics_pdf(filename):
    c = canvas.Canvas(filename, pagesize=letter)

    # 長方形を描く
    c.rect(100, 600, 200, 100, fill=1)

    # 円を描く
    c.circle(300, 500, 50, fill=0)

    c.save()

create_graphics_pdf("graphics_example.pdf")

 

このコードでは、「rect」メソッドで長方形を描画し、「circle」メソッドで円を描画しています。「fill」オプションを使用して塗りつぶしの有無を指定することができます。

 

5. 画像を埋め込む

 

 

「reportlab」では、PDF内に画像を埋め込むことも可能です。以下のコードでは、JPEG画像をPDFに追加する方法を示します。

 

from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas

def create_pdf_with_image(filename):
    c = canvas.Canvas(filename, pagesize=letter)

    # 画像をPDFに挿入
    c.drawImage("example_image.jpg", 100, 400, width=200, height=150)

    c.save()

create_pdf_with_image("pdf_with_image.pdf")

 

ここでは、「drawImage」メソッドを使って画像を指定した位置に挿入しています。画像のサイズや位置を調整することもできます。

 

6.複数ページのPDFを作成

 

「reportlab」では、複数ページのPDFを簡単に作成できます。「showPage」メソッドを使うことで、新しいページを追加することができます。

 

 

from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas

def create_multiple_pages_pdf(filename):
    c = canvas.Canvas(filename, pagesize=letter)

    # 最初のページにテキストを追加
    c.drawString(100, 750, "This is the first page.")
    c.showPage()  # 新しいページを追加

    # 2ページ目にテキストを追加
    c.drawString(100, 750, "This is the second page.")

    c.save()

create_multiple_pages_pdf("multiple_pages.pdf")

 

「showPage」を使うことで新しいページが追加され、次のページに内容を描画することができます。

 

まとめ

 

 

「reportlab」は、PythonでPDFを生成する際に非常に強力で柔軟なツールです。

テキスト、図形、画像などをPDFに追加することができ、カスタマイズも簡単に行えます。

 

この記事では、「reportlab」を使った基本的なPDFの作成方法について紹介しましたが、さらに高度な機能やデザインを試してみることができます。

自分のプロジェクトに合わせて、「reportlab」の機能を活用してみてください。

 

このブログ記事は、「reportlab」ライブラリを使った基本的なPDF作成方法を紹介する内容です。

もちろん、より複雑なPDF作成や、フォームの作成、グラフの埋め込みなど、「reportlab」には多くの機能がありますが、まずは基本的な部分を押さえておくと良いでしょう。

 

以上が、「reportlab」ライブラリを使ったPythonでPDFファイルを生成する方法になります。

 

 

 

 

 

 

 

関連記事:

【Python】Python仮想環境を別PCに移設する方法 - Django Girls and Boys 備忘録

 

【Python】Pythonで仮想環境を構築する手順 - Django Girls and Boys 備忘録

 

【Python】Visual Studio Codeで仮想環境を構築し自動的に有効化する方法 - Django Girls and Boys 備忘録

 

【Python学習法】おすすめ書籍と効率的な学習方法 - Django Girls and Boys 備忘録

 

【解決方法】PDF印刷時にダイアログボックスがはみ出す問題への対応方法 - Django Girls and Boys 備忘録

 

【Python】PythonでPDFファイルをテキストファイルに変換する方法 - Django Girls and Boys 備忘録

 

【Python】PythonでPDFファイルを生成する方法:「reportlab」ライブラリを使った基本ガイド - Django Girls and Boys 備忘録