A4横 のファイルを上下に並べて A3 にします。
プログラム
pdf_merge_landscape.py
#! /usr/bin/python
#
# pdf_merge_landscape.py
#
# Feb/01/2023
#
import sys
import PyPDF2
from PyPDF2 import Transformation
#
# ------------------------------------------------------------------
def show_size_proc(page_obj_in):
print(page_obj_in.artbox.lower_left)
print(page_obj_in.artbox.lower_right)
print(page_obj_in.artbox.upper_left)
print(page_obj_in.artbox.upper_right)
# ------------------------------------------------------------------
def pdf_page_read_proc(pdf_file_in):
pdf_file = open(pdf_file_in, 'rb')
pdf_reader = PyPDF2.PdfReader(pdf_file)
page_obj = pdf_reader.pages[0]
#
show_size_proc(page_obj)
#
return pdf_file,page_obj
# ------------------------------------------------------------------
def pdf_merge_proc(page_obj_a,page_obj_b):
deltx = 960
delty = 1080
page_obj_out = PyPDF2.PageObject.create_blank_page(width=deltx,height=delty)
page_obj_out_bb = PyPDF2.PageObject.create_blank_page(width=deltx,height=delty)
op = Transformation().translate(tx=0, ty=540)
page_obj_out.merge_page(page_obj_a)
page_obj_out.add_transformation(op)
page_obj_out_bb.merge_page(page_obj_b)
page_obj_out.merge_page(page_obj_out_bb)
#
show_size_proc(page_obj_out)
#
pdf_writer = PyPDF2.PdfWriter()
pdf_writer.add_page(page_obj_out)
#
return pdf_writer
# ------------------------------------------------------------------
sys.stderr.write ("*** 開始 ***\n")
sys.stderr.write("PyPDF2.__version__ = %s\n" % PyPDF2.__version__)
pdf_in_a = sys.argv[1]
pdf_in_b = sys.argv[2]
pdf_out = sys.argv[3]
#
pdf_file1,page_obj_a = pdf_page_read_proc(pdf_in_a)
pdf_file2,page_obj_b = pdf_page_read_proc(pdf_in_b)
#
pdf_writer = pdf_merge_proc(page_obj_a,page_obj_b)
#
pdf_file1.close()
pdf_file2.close()
#
pdf_output_file = open(pdf_out, 'wb')
pdf_writer.write(pdf_output_file)
#
pdf_output_file.close()
#
sys.stderr.write ("*** 終了 ***\n")
# ------------------------------------------------------------------
実行コマンド
入力 in01.pdf (A4) in02.pdf (A4)
出力 out01.pdf (A3)
./pdf_merge_landscape.py in01.pdf in02.pdf out01.pdf
実行結果
$ ./pdf_merge_landscape.py in01.pdf in02.pdf out01.pdf
*** 開始 ***
PyPDF2.__version__ = 3.0.1
(0, 0)
(960, 0)
(0, 540)
(960, 540)
(0, 0)
(960, 0)
(0, 540)
(960, 540)
(0, 0)
(960, 0)
(0, 1080)
(960, 1080)
*** 終了 ***
次のバージョンで確認しました。
$ python --version
Python 3.10.7
>>> import PyPDF2
>>> PyPDF2.__version__
'3.0.1'