A4のPDFを2ページごとに左右に割付けてA3にしたいなぁという欲望にかられていたら、
「A4のPDFをA3に2面付(2in1)する -- Python(PyPDF2)」
https://qiita.com/miko/items/054b982700c6219c7fce
を見つけたので、少しアレンジしてみる。
とどのつまり、例えばA4の10ページ分のPDFがあったとしたら、2in1でA3の5ページ分のPDFに変換して分割したいということです。
そして総ページ数が奇数の場合、最後のページの右側は真っ白にして、とにかく全ページをA3に変換する。
pdf_A3.py
import PyPDF2
A3_width = 1190.5511811024
A3_height = 841.8897637795
#元になるA4ファイルの読み込み
pdf_file = open('***.pdf','rb')
pdf_reader = PyPDF2.PdfFileReader(pdf_file)
#元になるA4ファイルのページ数の把握
page_num = pdf_reader.getNumPages()
cnt = 1
for start_page in range(0, page_num, 2):
A3_page = PyPDF2.pdf.PageObject.createBlankPage(width=A3_width, height=A3_height)
end_page = start_page + 1
#左に奇数ページを配置
page_left = pdf_reader.getPage(start_page)
A3_page.mergePage(page_left)
#右に偶数ページを配置するが、総ページ数が奇数のとき最後のA3ページの右側は白紙にする
if start_page + 1 < page_num:
page_right = pdf_reader.getPage(end_page)
A3_page.mergeRotatedScaledTranslatedPage(page_right, 0, 1, A3_width / 2, 0, expand=False)
else:
pass
pdf_writer = PyPDF2.PdfFileWriter()
pdf_writer.addPage(A3_page)
#生成するファイル名の後にゼロ埋め4桁の数字を付すためのおまじない
file_num = str(cnt).zfill(4)
file_name = 'test_A3_' + file_num + '.pdf'
output_file = open(file_name,'wb')
pdf_writer.write(output_file)
output_file.close()
cnt += 1
pdf_file.close()
print ('終了!')
なんの需要があるのか分からないプログラムだが、パソコンの画面って横長だからさ、A4のPDFを横並びにしてA3にして表示したら見やすいだろ、と言い張りたいが、Acrobat Readerなりのビューアーの設定で表示を「見開きページ」にすればいいだけの話です。