ぬこ将軍です🐈
仕事でありがちな請求書や点検表とかの電子ファイルって、提出する時はバラバラではなくて1つにまとめて提出しないといけない時ってありませんか?
ファイルまとめの作業を、例えば月に1回とか定期的に実行しないといけないのに、ファイル結合したら「このページ実は要らないんだけど、必要なページだけまとめることって出来ない?」と差し戻しされた時は「あああ!!めんどくせぇぇぇ!!」と心の中で叫ばずにはいられません。。。
今回は「Pythonで複数のPDFファイルをまとめる方法」についての第3弾です。
第1弾では手軽にPDFファイルを結合するPythonプログラムの実施例を共有しました。
nukoshogun.hatenablog.com
また第2弾では異なるフォルダにあるPDFファイルも一緒にまとめるプログラム実施例を共有しました。
nukoshogun.hatenablog.com
そして第3弾では、PDFファイルの必要なページだけをまとめるプログラム実施例を共有します!
「複数のファイルを結合したいけど、全ページだと容量多くなったり見づらいから必要なページだけまとめたい!」という時にきっと役に立つプログラムです。
- 複数のファイルまとめという、面倒な作業を一刻も早く無くしたい!
- Pythonの勉強を始めたばかりで、何か役に立ちそうなプログラムを作ってみたい!
そんな方々の参考になりましたら幸いです。
【必要なページだけ抽出!】Pythonで複数のPDFファイルをまとめる方法
今回は下記のフォルダ内の3ファイルを結合対象とします。第1弾と同様ですね。
その3ファイルの内、エリア3.pdfには補足というページがあります。今回はこの補足ページは不要ということにします。
そして、私が実践したことを先に結論として書きます。
- 必要なライブラリをインポートする。
- まとめたい月のフォルダを指定するコードを書く。
- 出力先のフォルダを新規作成するコードを書く。
- 指定したフォルダ内のファイルを結合するコードを書く。
以上の4ステップですが、実は第1弾と同じです。しかし最後の「指定したフォルダ内のファイルを結合するコードを書く」ステップだけは異なるので、そこを具体的に書いていきます。
第1弾はコチラ⇓
【手軽にPDFを結合!】Pythonを使ったスマートなファイル結合テクニック - ゼロからの業務効率化ノート
必要なPythonライブラリをインポートする
必要なライブラリですが、第1弾と同じです。
まとめたい月のフォルダを指定するコードを書く
こちらに関しても第1弾と同じです。monthという変数にまとめたい月の数字を入れ、まとめたい月のフォルダパスがpathという変数に入る仕組みです。
出力先のフォルダを新規作成するコードを書く
こちらも第1弾と同様です。path_outという変数に出力先のフォルダパスを入れ、os.makedirs(path_out)でフォルダの新規作成を実行します。
ここまでのステップの詳細を確認したい方はコチラ⇓
【手軽にPDFを結合!】Pythonを使ったスマートなファイル結合テクニック - ゼロからの業務効率化ノート
指定したフォルダ内のファイルを結合するコードを書く
対象のファイルと出力先が決まれば、あとは結合のみです!
今回は今までと違いfor文を使わず、「対象のファイルを1つずつmergeオブジェクト(結合ファイル)へ挿入する」ということをやっています。
エリア3.pdfでページを指定する必要がある関係上そうしました。
files[0],files[1],files[2]という記載がありますが、これはlist型変数であるfilesの各要素であり、中身は以下のようになっています。
手順はまず、【merger.append(files[0])】で1番目のファイル(エリア1.pdf)をmergeオブジェクトへ入れます。その後に【merger.append(files[1])】で2番目のファイル(エリア2.pdf)をmergeオブジェクトへ入れています。
実はここまでは、今までfor文で実行していたことと実質一緒です。
新しいのはここからで、【merger.merge(2,files[2], pages=(0,1))】というコードを書くことでエリア3.pdfの結果ページのみ、つまり補足ページを除いた状態でmergeオブジェクトへ入れています。
ポイントは【pages=(0,1)】の部分です。
append()とmerge()メソッドでは引数としてpagesが指定でき、任意のページのみを抽出して結合できるという特徴があります。
指定方法は【pages = (start, stop[, step])】で、stepは省略可能ですがstopは省略不可です。startとstopにはページ数が入り、stopで指定したページは含まれないので注意です。
今回はエリア3.pdfの1ページのみ抽出したいので、【pages=(0,1)】となるわけです。
最後はこれまでと同様、【merger.write(path_out + "\\" + month + "月_○○部署3.pdf")】というコードを実行して結合ファイルを作成しました。
こうして不要なページを除いたうえで、無事にまとめることができました!
Pythonを使ったファイル結合テクニックまとめ
Pythonを使ったスマートなファイル結合テクニックの手順をまとめると以下の通りです。
- 必要なライブラリをインポートする。
- まとめたい月のフォルダを指定するコードを書く。
- 出力先のフォルダを新規作成するコードを書く。
- 指定したフォルダ内のファイルを結合するコードを書く。
やはり手順を文章にしてみると長くなってしまうのですが、Pythonを活用することでファイルに余計なページがあってもそれを除外し、簡単にファイル結合が出来るようにました!
これを読んだあなたも、Pythonを勉強しながら少しずつ面倒な作業を無くしていきませんか?
Pythonのスマートファイル結合テクニック関連の記事
nukoshogun.hatenablog.com