はじめに
Pythonの基本文法を勉強するために、複数のPDFファイルを1つのPDFファイルに統合するプログラムを書きました。PDFファイルの結合・書き込みにはPyPDF2を使用しています。
PyPDF2をインストール
pipを使用してPyPDF2をインストールします。
> pip install PyPDF2
インポート
PDFファイルを統合するためにPdfFileMerger
を、フォルダ指定時にPDFファイルを自動的に見つけるためにos
, glob
をインポートしておきます。
from PyPDF2 import PdfFileMerger
import os
import glob
初期化
統合するための初期化を行います。
def main():
merger = PdfFileMerger()
merge_files = []
統合するファイルの指定
指定終了処理
まずは、m
と入力されるまで指定を続け、m
が入力された場合にはファイルの指定を終了して次の処理に進むようにしておきます。変数iはファイルの数をカウントするためのものです。
i = 1
while True:
print("Merge file or Folder ", i, " (Type 'm' to merge.) -> ", sep='', end='')
in_file = input()
if in_file == 'm':
break
ファイルを指定
入力されたパスがファイル名であり、PDFファイルである場合にはマージするファイルリストに追加していきます。拡張子がPDFではない場合にはそれを伝えるメッセージを出力しています。
elif os.path.isfile(in_file):
ext = os.path.splitext(in_file)
if ext == '.pdf':
merge_files.append(in_file)
i += 1
else:
print("指定したファイルはPDFファイルではありません.")
ここではまず、os.path.isfile()
によって引数がファイルであるかフォルダであるかを識別しています。次に、os.path.splitext()
を使って拡張子を識別しています。
指定したファイルがPDFファイルであった場合には、append()
によってマージするファイルのリストに追加します。
フォルダを指定
入力されたパスがフォルダ名だった場合には、そのディレクトリ下にあるpdfファイルを全てリストに追加し、追加したファイル名を出力しています。
else:
for file in glob.glob(in_file + '*.pdf'):
merge_files.append(file)
print("Add " + file)
i += 1
glob.glob()
によって指定フォルダ内のPDFファイルをリスト化し、順にマージするリストに追加しています。
出力ファイルの指定
出力するPDFファイルの名前を指定します。指定した名前の拡張子が.pdf
でない場合には最後に.pdf
を付けてPDF形式にしています。
print("Generated file -> ", end='')
out_file = input()
ext = os.path.splitext(out_file)
if ext != '.pdf':
out_file = out_file + '.pdf'
ここでもos.path.splitext()
を使って拡張子を調べています。
ファイルを統合・出力
統合するファイルはmergerに一旦追加してから指定ファイルに書き込みます。
for file in merge_files:
merger.append(file)
merger.write(out_file)
merger.close()
print("File merge completed!!")
append()
によってmergerに追加してから、write()
によって指定出力先にPDFファイルを作成します。
最後に
コード全体はgithubからご確認ください → ( PDF-Handler )
Pythonは初心者なので読みづらい部分があるかと思いますがご了承ください。