Python PDF生成:PillowとReportLabを活用した画像処理

前の投稿を使ってPythonでディレクトリ構造を探索する方法をよく見ましたか? では、もう一歩進んでみましょう。 Pythonを活用すれば、複数の画像ファイルを一つのPDFに変換する作業をとても簡単に自動化することができます。

今回の記事ではPythonでPDFを生成する方法について説明し、そのために レポートラボ ライブラリを使用して画像を処理し、PDFに変換する方法を学んでみましょう。 画像ファイルをPDFにまとめる作業は、レポートやポートフォリオを作る時、役に立つことができます。今回の記事でPythonのPDF生成に必要なテクニックを少しずつ身につけてみてください。

Python PDF 생성

Pillowライブラリ:画像処理の基礎

は、Pythonで画像ファイルを処理するための最も一般的なライブラリの1つです。 画像を開いたり、サイズを変更したり、他の形式で保存したりすることが簡単にできます。PDF生成作業では、画像のサイズと解像度を確認し、それをそのままPDFに変換するために使用されます。

Pillowの設置と基本的な使い方

Pillowはpipを使って簡単にインストールすることができます。VS codeを使う場合、Terminalウィンドウで実行すればいいです。私のパソコンには既に該当パッケージがインストールされているので、インストール要件が既に満たされていると表示されています。

ピップインストールピロー
Python PDF 생성 포스트 터미널 캡쳐 그림

インストール後、画像を開いて確認する簡単な例を見てみましょう。

PIL import Image from PIL import Image

img_path = "C:/Users/user/user/Documents/lease_renewal_process.png"
img = Image.open(img_path)
print(img.size) #の画像サイズを出力します。

このコードは、Pillowを使って画像を開き、その画像のサイズを出力する基本的な作業を行います。この情報は後にPDFを生成する際に重要な情報として使用されます。

ReportLab: PDF作成の基礎

レポートラボはPythonでPDFを生成するのにとても便利なライブラリです。テキスト、画像、図形などを自由に追加することができ、カスタムページサイズの設定も可能です。画像をPDFに変換するときは、画像のサイズに合ったページを設定し、その上に画像を挿入する方法で作業が行われます。

ReportLab のインストールと基本的な使い方

ReportLabもpipコマンドでインストールできます。

pip install reportlab

インストール後、簡単なPDFファイルを生成する例を見てみましょう。

reportlab.pdfgen import canvas from reportlab.pdfgen

pdf_path = "C:/Users/user/user/Documents/output.pdf"
c = canvas.Canvas(pdf_path)
c.drawString(100, 750, "Hello, this is a PDF!")
c.save()

このコードは、「Hello, this is a PDF!」というテキストを含むPDFファイルを生成します。PDFページに文字だけでなく、画像も追加することができ、このような機能を活用して Python PDFを自動的に生成する様々な作業を行うことができます。

Python PDF 생성 포스트 pdf 생성결과 캡쳐 그림

画像からPDFに変換する

では、PillowとReportLabを組み合わせて、複数の画像ファイルを一つのPDFに変換する例を見てみましょう。 このプロセスでは、複数の画像ファイルを呼び出して、それぞれのサイズに合ったページを生成し、画像ファイルをそのページの上に挿入する方法で作業が行われます。

完全なコード例

インポートOS
from PIL import Image
from reportlab.pdfgen import canvas

def process_images(c, dir_path):
    img_list = sorted([img_name for img_name in os.listdir(dir_path) if img_name.endswith(".png")])
    for img_name in img_list:
        img_path = os.path.join(dir_path, img_name)
        img = Image.open(img_path)
        img_width, img_height = img.size
        c.setPageSize((img_width, img_height)) #の画像サイズに合わせたページサイズを設定します。
        c.drawInlineImage(img_path, 0, 0, width=img_width, height=img_height) # 画像の挿入
        c.showPage()

def create_pdf_from_images(main_dir, output_pdf):
    c = canvas.Canvas(output_pdf)
    process_images(c, main_dir)
    c.save()
    print(f"PDFファイルが作成されました: {output_pdf}")

main_dir = "C:/Users/user/user/Documents/images" #の画像が保存されているフォルダ(自分の環境に合わせて調整)
output_pdf = "C:/Users/user/Documents/output.pdf" # 出力するPDFのパス(環境に合わせて調整)
create_pdf_from_images(main_dir, output_pdf)

コード説明

  1. process_images 関数この関数は、指定されたディレクトリからPNGファイルを取得して画像を処理し、それぞれの画像サイズに合ったページをPDFに追加します。
  2. create_pdf_from_images 関数: この関数は、Canvasオブジェクトを生成し、画像ファイルを処理した後、PDFとして保存します。
  3. Pillowを使った画像処理: 各画像のサイズを確認し、PDFページのサイズを画像に合わせて設定することが重要です。
  4. ReportLabを使ったPDF生成Canvasオブジェクトを介して各画像ファイルを1ページずつPDFに変換し、最後にPDFファイルとして保存します。

画像からPDFに変換する際の注意事項

PythonでPDFを生成する際には、いくつかの注意点があります。まず、画像の解像度とサイズを事前に確認する必要があり、ページサイズを小さく設定すると、画像が正しく出力されない場合があります。 また、画像の拡張子によって異なる処理方法が必要な場合があるため、変換する画像ファイル形式を明確に指定する必要があります。

結論:Python PDF生成の有用性

今回の記事では Python PDF 生成について調べてみて、 レポートラボを使用して画像をPDFに変換する方法を学びました。 この技術を活用すれば、様々な画像ファイルを一度にPDFにまとめて文書化することができ、レポートやポートフォリオ作成にも非常に便利です。 Python PDFを生成する作業を自動化したい場合は、今回の記事で紹介した方法を参考にしてみてください!

類似の投稿