【Python】フォルダー内の画像をpdf化する

当サイトで紹介する商品・サービス等の外部リンクは、アフィリエイト広告を含む場合があります。
スポンサーリンク
本記事を読むと以下の実行ができます

フォルダー内の画像をPDF化する。

画像ファイルを一つのPDFにまとめることは、
プロジェクトやレポート、プレゼンテーションなどで非常に便利です。

特に、複数の画像ファイルを整理し、一つのファイルとして共有したい場合に役立ちます。
本記事では、Pythonを使ってフォルダー内の画像ファイルを簡単にPDFに変換する方法を紹介します。

本記事は次の人におすすめ
  • 複数の画像ファイルを一つにまとめたい
  • 画像をPDFに変換する方法を探している
  • プロジェクトやレポートに画像を一括で取り込みたい
Udemyで学習する
スポンサーリンク

画像をPDF化するメリット

画像をPDF化することで、複数の画像ファイルを一つにまとめることができます。
これにより、ファイル管理が容易になり、共有や印刷が簡単になります。

また、PDFは広くサポートされているフォーマットであり、
PCやiPad、スマートフォンなど異なるデバイスやプラットフォームでも一貫した表示が可能です。

さらに、PDFファイルはセキュリティ機能も備えており、
パスワード保護や編集制限を設定することができます。

PDF化するモジュール

画像をPDFにするモジュールは、「img2pdf」、「FPDF」などがあります。

img2pdfFPDF
使いやすさ非常に簡単少し難しい
変換速度高速img2pdfよりやや遅い
画像品質元の品質を保持圧縮で品質が低下する可能性がある
ファイルサイズ大きくなる可能性がある圧縮で小さくなる
多機能性低機能
(画像の変換に特化、テキストNG)
高機能
(テキスト、グラフィック、リンクなどの追加が可能)
カスタマイズ性制限が多い高い

img2pdfは、手短なコードで処理できますが、ファイルが大きくなります。
対して、FPDFは、複雑な処理が可能なので、ファイルのサイズを小さくできます。

著者の体験談
著者の体験談

FPDFは、コードエラーが良く起きたので、
画像変換だけの場合は、img2pdfを使うのがおすすめ。

img2pdfの場合は、次のようなコードで画像をPDF化できます。

import img2pdf
from pathlib import Path

# 画像ファイルのパスを指定
image_path = 'input.jpg'
images_path =['input1.jpg','input2.jpg','input3.jpg'] #複数の画像を1つのPDFにする。
pdf_path = 'output.pdf'

# 画像をPDFに変換して保存
with open(pdf_path, "wb") as f:
    f.write(img2pdf.convert(image_path))

print(f"PDF saved as {pdf_path}")

フォルダー内の画像をPDF化する

フォルダー内の複数の画像ファイルを一つのPDFファイルにまとめる手順について説明します。
本記事では、Pythonを使用して簡単に実現する方法を紹介します。

ソースコード

import os
from PIL import Image
import img2pdf
import tkinter as tk
from tkinter import filedialog

def select_folder():
    root = tk.Tk()
    root.withdraw()
    folder_path = filedialog.askdirectory()
    return folder_path

def convert_images_to_pdf(folder_path):
    if not folder_path:
        print("フォルダーが選択されていません。")
        return
    
    images = []
    for file_name in os.listdir(folder_path):
        if file_name.lower().endswith(('.png', '.jpg', '.jpeg', '.tiff', '.bmp', '.gif')):
            file_path = os.path.join(folder_path, file_name)
            images.append(file_path)
    
    if not images:
        print("フォルダー内に画像ファイルが見つかりませんでした。")
        return

    folder_name = os.path.basename(folder_path)
    pdf_path = os.path.join(folder_path, f"{folder_name}.pdf")
    with open(pdf_path, "wb") as f:
        f.write(img2pdf.convert(images))
    
    print(f"PDFが作成されました: {pdf_path}")

if __name__ == "__main__":
    folder_path = select_folder()
    convert_images_to_pdf(folder_path)

UdemyでPythonを学習

Udemyは、オンデマンド式の学習講座です。
趣味から実務まで使えるおすすめの講座を紹介します。




解説

ユーザーが選択したフォルダー内の画像ファイルをPDFファイルに変換します。

  • ライブラリ

「os」:ファイルやディレクトリの操作を行うために使用します。
「PIL」:Python Imaging Libraryで、画像の操作や変換を行います。
「img2pdf」:画像ファイルをPDFに変換します。
「tkinter」:GUIを作成し、フォルダー選択ダイアログを表示します。

  • 変換する画像フォルダーを選択する

select_folder関数は、ユーザーにフォルダーを選択させ、そのパスを返します。
tk.Tk()でGUIのルートウィンドウを作成し、root.withdraw()で非表示にした後、filedialog.askdirectory()を使用してフォルダー選択ダイアログを表示します。

  • 画像ファイルの収集とPDFの作成

convert_images_to_pdf関数は、選択されたフォルダー内の画像ファイルを収集し、PDFに変換します。

フォルダーが選択されていない場合やフォルダー内に画像ファイルがない場合は、
エラーメッセージを表示します。

次に、画像ファイルのパスをリストに追加します。
各ファイル名が画像の拡張子(.png, .jpg, .jpeg, .tiff, .bmp, .gif)のいずれかで終わる場合、
そのファイルのパスを取得します。

最後に、img2pdf.convertを使用してPDFを作成し、指定されたパスに保存します。

実演

スクリプトを実行すると、フォルダー選択ダイアログが表示されます。
変換したい画像が含まれるフォルダーを選択します。

スクリプトは選択されたフォルダー内の画像ファイルを収集し、一つのPDFファイルに変換します。
変換されたPDFファイルがフォルダー内に保存されます。

まとめ

このスクリプトを使用することで、フォルダー内の画像ファイルを簡単にPDFに変換できます。
PDFにすることで、ファイル管理や共有が簡単になり、様々なデバイスで一貫した表示が可能です。Pythonのライブラリを活用することで、画像処理やファイル操作が効率的に行えます。

Udemyで学習する
タイトルとURLをコピーしました