機械系エンジニアの備忘録

20代独身社会人。仕事では機械・機構の研究開発を行っているエンジニアが、自分の専門分野ではないpythonを扱って楽しむブログです。

MENU

【python】【tkinter】【PyPDF2】PyPDF2を用いてPDFを結合する簡単なアプリを作る

tkinterとPyPDF2を組み合わせてGUIからPDFを複数選択し、選択したPDFファイルを結合する

■はじめに

複数のPDFを結合したいと思ったことはありませんか?

スキャンしたデータ、論文のPDFファイルなど。

pythonにはPyPDF2というモジュールがあり、PyPDF2を使用するとPDFの結合や分解が簡単に行えます。

今回はTkinterと組み合わせて、GUI上で簡単に操作できるPDF結合ソフトを作成してみたいと思います。

 

■コード

import PyPDF2 as pdf2
import tkinter.filedialog as fl 
import tkinter as tk
import tkinter.messagebox as mb

root=tk.Tk()
root.title('PDF結合ソフト')
entry_title=tk.Entry(root,width=40)
entry_title.insert(tk.END,"保存するファイル名を記入してください")
entry_title.grid(row=0,column=1,padx=5)

def select():
    sub_pdf=pdf2.PdfFileMerger()
    filetype=[("all file","*")]
    path=fl.askopenfilenames(initialdir="C:/Users/ユーザー名",filetypes=filetype,title="select file")
    file_title=entry_title.get()
    for i in path:
        sub_pdf.append(i)
    sub_pdf.write('C:/Users/ユーザー名/'+file_title+'.pdf')
    sub_pdf.close()
    mb.showinfo("確認","PDFの結合に成功しました")

button_select=tk.Button(root,text="選ぶ&結合",width=10,command=select)
button_select.grid(row=0,column=0)

root.mainloop()

(※コード内の「ユーザー名」の部分にお使いのPCの名前を入れて下さい)

実行すると以下の画面が現れます。

f:id:stjun:20191105235628p:plain

右にファイル名を記入し(今回は名前はデフォルトのままにします)、左のボタンを押すと選択画面になります。

f:id:stjun:20191106000003p:plain

そこでPDFファイルを結合したい順に複数選ぶと自動で 結合したファイルが作成されます。今回は自分のブログ記事をPDFにしてそれぞれtest1、test2とし、1つのpdfに結合しました。

f:id:stjun:20191106000053p:plain

f:id:stjun:20191106000228p:plain

 
■買って良かったもの紹介

 今回紹介したmatplotlib以外にもpandasやBokehなどのモジュールの使い方が書かれている本です。

公式リファレンス等もありますし、ネットで探せばいくらでもモジュールの使い方・書き方は見つかりますが、一冊くらいこのような本を手元に持っておくと便利です。

 

pythonを初めて触ろうとした時に読んだ本を紹介します。

 

 この本は、初心者に最適だと思います。確か亀を動かすゲームのようなコードが載っていたと思います。pythonをこれから始めようと思っている人は読んでみて下さい。

また下の入門python3も良い本だと思いますが、分厚いので中々根気が必要です。個人的には最小限必要なことが書いてある薄い本を読み、必要になってからちょっとずつ知識を増やしていくのが良いと思います。

また何度も紹介しますが、以下のニューラルネットワーク自作入門は非常に良い本です、pythonの書き方から記載されているのでいきなり読んでも大丈夫だと思います。

 とりあえず基本的なコードの書き方さえ分かってしまえば、後はネットで知りたい情報にアクセスする方が早いと思います。

 

■説明

 まずPyPDF2をインストールします。

Anacondaを使ってる人はAnaconda Promptを開いて以下を打ち込むとインストールできます。

pip install PyPDF2

 

PyPDF2でPDFを結合するには以下の4文でOKです。

①sub_pdf=pdf2.PdfFileMerger()
②sub_pdf.append()
③sub_pdf.write()
④sub_pdf.close()

①は呪文のようにとりあえず書くと思ってくれたら良いです。新しいpdfファイルを作成しているイメージです。

②は結合したいpdfを①で作成した新しいpdfファイルに追加します。例えばtest1.pdfとtest2.pdfを結合したい場合は、

sub_pdf.append('test1.pdf')

sub_pdf.append('test2.pdf')

とすれば良いです。ただしこの順番で結合されるので気を付けてください。

全部書き終わったら③で結合します。write()の中はファイル名を書きます。

後は④で開いていたpdfを閉じれば終わりです。

tkinterの使い方は過去記事で多く紹介しているので見てみて下さい。

以下の記事が今回の内容に近いと思います。

 

stjun.hatenablog.com

 

■おわりに

いかがだったでしょうか。結構簡単ですね。

ただPowerpointやワードをpdfにしたものは、なぜか文字コードエラーで結合できませんでした。これについては対処法を考え中です。

次回はまた便利なアプリを作ったら紹介したいと思います。

次記事はこちらです。

stjun.hatenablog.com