LoginSignup
2
5

More than 3 years have passed since last update.

PythonでPDFファイルを統合する

Posted at

はじめに

Pythonの基本文法を勉強するために、複数のPDFファイルを1つのPDFファイルに統合するプログラムを書きました。PDFファイルの結合・書き込みにはPyPDF2を使用しています。

PyPDF2をインストール

pipを使用してPyPDF2をインストールします。

> pip install PyPDF2

インポート

PDFファイルを統合するためにPdfFileMergerを、フォルダ指定時にPDFファイルを自動的に見つけるためにos, globをインポートしておきます。

merge.py(1)
from PyPDF2 import PdfFileMerger
import os
import glob

初期化

統合するための初期化を行います。

merge.py(2)
def main():
    merger = PdfFileMerger()

    merge_files = []

統合するファイルの指定

指定終了処理

まずは、mと入力されるまで指定を続け、mが入力された場合にはファイルの指定を終了して次の処理に進むようにしておきます。変数iはファイルの数をカウントするためのものです。

merge.py(3)
    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ではない場合にはそれを伝えるメッセージを出力しています。

merge.py(4)
        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ファイルを全てリストに追加し、追加したファイル名を出力しています。

merge.py(5)
        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形式にしています。

merge.py(6)
    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に一旦追加してから指定ファイルに書き込みます。

merge.py(7)
    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は初心者なので読みづらい部分があるかと思いますがご了承ください。

2
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
5