PDF ファイルの連結 with Python3

背景

ScanSnap で書籍を自炊していたが、
補充ミスでPDF ファイルが分割されてしまうことがあった。

それらの分割されたファイルを1つにまとめたい。

コード

import PyPDF2
pdf1_file = open(‘夜間飛行.pdf’, ‘rb’)
pdf2_file = open(‘夜間飛行2.pdf’, ‘rb’)
pdfa_reader = PyPDF2.PdfFileReader(pdf1_file)
pdfb_reader = PyPDF2.PdfFileReader(pdf2_file)
pdf_writer = PyPDF2.PdfFileWriter()
for page_num in range(pdfa_reader.numPages):
page_obj = pdfa_reader.getPage(page_num)
pdf_writer.addPage(page_obj)

for page_num in range(pdfb_reader.numPages):
page_obj = pdfb_reader.getPage(page_num)
pdf_writer.addPage(page_obj)

pdf_output_file = open(‘夜間飛行3.pdf’, ‘wb’)
pdf_writer.write(pdf_output_file)
pdf_output_file.close()
pdf1_file.close()
pdf2_file.close()

出力結果

無事に2つに別れてしまっていたファイルを1つにまとめることができました。

WD を眺めながら作業を行なっていたら、
 pdf_writer.write(pdf_output_file)
を入力時にファイルが作成されたものの、
この段階では空のファイルであり、
 pdf_output_file.close()
を入力した際にデータが書き込まれたのが面白かった。

pdfa_readerpdfb_reader については、本来は
pdf1_readerpdf2_reader になるはずだったが Typo。

見やすくすると以下の様になるかと思います。

import PyPDF2

file1 = open(‘hoge.pdf’, ‘rb’)
file2 = open(‘hoge2.pdf’, ‘rb’)
pdf1_reader = PyPDF2.PdfFileReader(file1)
pdf2_reader = PyPDF2.PdfFileReader(file2)
pdf_writer = PyPDF2.PdfFileWriter()

for page_num in range(pdf1_reader.numPages):
page_obj = pdf1_reader.getPage(page_num)
pdf_writer.addPage(page_obj)

for page_num in range(pdf2_reader.numPages):
page_obj = pdf2_reader.getPage(page_num)
pdf_writer.addPage(page_obj)

pdf_output_file = open(‘hoge3.pdf’, ‘wb’)
pdf_writer.write(pdf_output_file)
pdf_output_file.close()
file1.close()
file2.close()

その他

ScanSnap で PDF ではなく JPEG として保蔵されているものがありました。
それのファイル変換は、オンラインサービスを使ったほうが良さそう。

https://jpg2pdf.com/ja/

1ヶ月ぶりに Python をいじる

プログラミング〜 (^^)/

4月以来、コードをいじっていないことが発覚。
本を見返しても、なんのこっちゃ?状態でした。

これはマズイ…と思ったので
再び独学を再開。

Selenium のドライバーインストール前後で止まっていたので、
その辺りから再開。

中途半端に Firefox のドライバー(Geckodriver)は /usr/local/binにコピーされていました。
なので、Chrome と Safari の設定だけして今日のところは終わり。

参考サイト

【selenium】Firefox/Chrome/SafariのWebDriverインストール – Python 編 –

https://qiita.com/hujuu/items/ef89c34fca955cc571ec

久しぶりすぎて Terminal から .py を起動するときに
chmod +x filename.py をやるのを忘れていました。。。汗