0
2

More than 1 year has passed since last update.

Python3: A4横 の PDF をマージして A3 にする

Posted at

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'
0
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
0
2