ゼロからの業務効率化ノート

30代未経験から始まったノーコード&Pythonチャレンジ

【PDFの必要なページだけ結合!】Pythonでスマートなファイル結合テクニックその3


ぬこ将軍です🐈
仕事でありがちな請求書や点検表とかの電子ファイルって、提出する時はバラバラではなくて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には補足というページがあります。今回はこの補足ページは不要ということにします。

そして、私が実践したことを先に結論として書きます。

  1. 必要なライブラリをインポートする。
  2. まとめたい月のフォルダを指定するコードを書く。
  3. 出力先のフォルダを新規作成するコードを書く。
  4. 指定したフォルダ内のファイルを結合するコードを書く。

以上の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を使ったファイル結合テクニックまとめ

結合ファイルの中身。エリア3.pdfの補足ページが無く、全3ページになっている。

Pythonを使ったスマートなファイル結合テクニックの手順をまとめると以下の通りです。

  1. 必要なライブラリをインポートする。
  2. まとめたい月のフォルダを指定するコードを書く。
  3. 出力先のフォルダを新規作成するコードを書く。
  4. 指定したフォルダ内のファイルを結合するコードを書く。

やはり手順を文章にしてみると長くなってしまうのですが、Pythonを活用することでファイルに余計なページがあってもそれを除外し、簡単にファイル結合が出来るようにました!

これを読んだあなたも、Pythonを勉強しながら少しずつ面倒な作業を無くしていきませんか?


Pythonのスマートファイル結合テクニック関連の記事
nukoshogun.hatenablog.com

nukoshogun.hatenablog.com