【Python】フォルダー内の画像をpdfに変換・編集する

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

フォルダー内の画像をPDFに変換する。

画像ファイルを一つのPDFにまとめることは、プロジェクトやレポート、プレゼンテーションなどで非常に便利です。特に複数の画像ファイルを整理し、一つのファイルとして共有したい場合に役立ちます。

また、大学の講義でスマホで撮影した画像をPDFで提出するように求めてくることもあります。

本記事では、Pythonを使ってフォルダー内の画像ファイルを簡単にPDFに変換する方法を紹介します。

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

画像をPDF化するメリット

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

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

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

PDF変換するモジュール|img2pdfの使い方

画像を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をコピーしました