背景
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_reader と pdfb_reader については、本来は
pdf1_reader と pdf2_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 として保蔵されているものがありました。
それのファイル変換は、オンラインサービスを使ったほうが良さそう。