LoginSignup
1
2

More than 3 years have passed since last update.

A4のPDFを2ページごとのA3に変換・分割する

Last updated at Posted at 2020-11-17

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なりのビューアーの設定で表示を「見開きページ」にすればいいだけの話です。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2