A4 のファイルを左右に並べて A3 にします。
pdf_merge.py
#! /usr/bin/python
#
# pdf_merge.py
#
# Jan/31/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_merge_proc(pdf_reader1,pdf_reader2):
page_obj_a = pdf_reader1.pages[0]
page_obj_b = pdf_reader2.pages[0]
show_size_proc(page_obj_a)
page_obj_out = PyPDF2.PageObject.create_blank_page(width=1190, height=842)
page_obj_out_bb = PyPDF2.PageObject.create_blank_page(width=1190, height=842)
page_obj_out.merge_page(page_obj_a)
op = Transformation().translate(tx=595, ty=0)
page_obj_out_bb.merge_page(page_obj_b)
page_obj_out_bb.add_transformation(op)
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 = open(pdf_in_a, 'rb')
pdf_file2 = open(pdf_in_b, 'rb')
pdf_reader1 = PyPDF2.PdfReader(pdf_file1)
pdf_reader2 = PyPDF2.PdfReader(pdf_file2)
#
pdf_writer = pdf_merge_proc(pdf_reader1,pdf_reader2)
#
pdf_output_file = open(pdf_out, 'wb')
pdf_writer.write(pdf_output_file)
#
pdf_file1.close()
pdf_file2.close()
pdf_output_file.close()
#
sys.stderr.write ("*** 終了 ***\n")
# ------------------------------------------------------------------
実行コマンド
入力 in01.pdf (A4) in02.pdf (A4)
出力 out01.pdf (A3)
./pdf_merge.py in01.pdf in02.pdf out01.pdf
実行結果
$ ./pdf_merge.py in01.pdf in02.pdf out01.pdf
*** 開始 ***
PyPDF2.__version__ = 3.0.1
(0, 0)
(595.2756, 0)
(0, 841.8898)
(595.2756, 841.8898)
(0, 0)
(1190, 0)
(0, 842)
(1190, 842)
*** 終了 ***
次のバージョンで確認しました。
$ python --version
Python 3.10.7
>>> import PyPDF2
>>> PyPDF2.__version__
'3.0.1'