PDF Pythonツール

Pythonでフォルダ内のPDFを一括で回転させる方法

概要

このブログ記事では、Pythonを使用して指定されたフォルダ内のPDFファイルを一括で90度、180度、または270度回転させる方法を詳しく解説します。フォルダを選択し、必要な回転角度を選べる簡単なプログラムを使ってみましょう。

使用例

  • 企業でスキャンした文書が一部逆さまになってしまった場合
  • 電子書籍のページの向きを一括で修正したい場合
  • アーカイブされたPDFファイルの向きを統一したい場合

必要なPythonライブラリとインストール方法

このプログラムを実行するために必要な主なライブラリは tkinterPyPDF2 です。以下のコマンドを実行して、これらのライブラリをインストールしてください。

pip install pypdf2

tkinter はPythonの標準ライブラリの一部であるため、通常は追加のインストールが不要です。

使用手順

  1. プログラムの準備: 上記で示したPythonスクリプトをローカルのPython環境に保存します。
  2. フォルダ選択: プログラムを実行すると、フォルダ選択ダイアログが表示されますので、PDFファイルが保存されているフォルダを選択します。
  3. 角度の選択: GUI上で90度、180度、または270度の回転を選択します。
  4. 実行: 選択後、プログラムが自動的に全てのPDFを指定された角度で回転し、上書きされます。

注意点

  • このプログラムは、PDFファイルが他のアプリケーション(例えばAdobe Acrobat Readerなど)で開かれている場合、ファイルにアクセスできないかもしれません。使用する前に、すべてのPDFファイルが閉じていることを確認してください。
  • 回転されたPDFは元のファイルを上書きしますので、元のファイルが必要な場合は事前にバックアップを取っておくことをお勧めします。

プログラム

下記のコードをメモ帳などに丸々コピーしてpythonファイル(〇〇.py)にしてください。

import tkinter as tk
from tkinter import filedialog
from PyPDF2 import PdfReader, PdfWriter
import os

def select_folder():
folder_path = filedialog.askdirectory()
if folder_path:
return folder_path
else:
return None

def rotate_pdfs(folder_path, angle):
if folder_path:
for filename in os.listdir(folder_path):
if filename.endswith(".pdf"):
full_path = os.path.join(folder_path, filename)
reader = PdfReader(full_path)
writer = PdfWriter()

# 更新された部分: rotate_clockwise を rotate に置き換え
for page in reader.pages:
page.rotate(angle) # 時計回りに角度を指定
writer.add_page(page)

with open(full_path, 'wb') as f:
writer.write(f)

print(f"All PDFs in {folder_path} have been rotated {angle} degrees.")

def main():
root = tk.Tk()
root.title("PDF Rotator")

folder_path = select_folder()

frame = tk.Frame(root)
frame.pack(padx=20, pady=20)

rotate_90_btn = tk.Button(frame, text="Rotate 90°", command=lambda: rotate_pdfs(folder_path, 90))
rotate_90_btn.pack(side=tk.LEFT, padx=10)

rotate_180_btn = tk.Button(frame, text="Rotate 180°", command=lambda: rotate_pdfs(folder_path, 180))
rotate_180_btn.pack(side=tk.LEFT, padx=10)

rotate_270_btn = tk.Button(frame, text="Rotate 270°", command=lambda: rotate_pdfs(folder_path, 270))
rotate_270_btn.pack(side=tk.LEFT, padx=10)

root.mainloop()

if __name__ == "__main__":
main()

あるいは、下のテキストファイルをダウンロードし、「.txt」を「.py」に変えることでそのまま使えます。

まとめ

Pythonを使用してPDFファイルを簡単に自動回転させる方法をご紹介しました。このスクリプトを使えば、複数のPDFファイルを効率的に処理でき、作業の自動化と効率化が実現できます。Pythonの基本的な使い方から、ファイル操作の自動化まで、さまざまな可能性を探る一助となれば幸いです。

-PDF, Pythonツール