LoginSignup
0
1

More than 1 year has passed since last update.

Python3: A4横 の PDF を A3 の PDF に変換

Last updated at Posted at 2022-08-08

例えば 10ページの A4横 の PDF を、5ページの A3 の PDF に変換します。

プログラム

pdf_a4_a3_landscape.py
#! /usr/bin/python
#
#	pdf_a4_a3_landscape.py
#
#						Feb/01/2023
#
import  sys
import  PyPDF2
from PyPDF2 import Transformation
#
# ------------------------------------------------------------------
def pdf_merge_proc(pdf_reader1):
	deltx = 960
	delty = 1080
	pages= len(pdf_reader1.pages)
	nn_out = int((pages + 1) / 2)
	sys.stderr.write("pages = %d\n" % pages)
	sys.stderr.write("nn_out = %d\n" % nn_out)
#
	pdf_writer = PyPDF2.PdfWriter()
#
	for icount in range(nn_out):
		it = icount * 2
		page_obj_a = pdf_reader1.pages[it]

		page_obj_out = 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)

		jt = it + 1
		if jt < pages:
			page_obj_b = pdf_reader1.pages[jt]
			page_obj_out.merge_page(page_obj_b)
#
		pdf_writer.add_page(page_obj_out)
#
	return pdf_writer
# ------------------------------------------------------------------
sys.stderr.write ("*** 開始 ***\n")
pdf_in = sys.argv[1]
pdf_out = sys.argv[2]
#
pdf_file_in = open(pdf_in, 'rb')
pdf_reader1 = PyPDF2.PdfReader(pdf_file_in)
#
pdf_writer = pdf_merge_proc(pdf_reader1)
#
pdf_output_file = open(pdf_out, 'wb')
pdf_writer.write(pdf_output_file)
pdf_output_file.close()
pdf_file_in.close()
#
sys.stderr.write ("*** 終了 ***\n")
# ------------------------------------------------------------------

実行方法

./pdf_a4_a3_landscape.py file_a.pdf file_a3.pdf

次のバージョンで確認しました。

$ python --version
Python 3.10.7
>>> import  PyPDF2
>>> PyPDF2.__version__
'3.0.1'

A4縦の変換はこちら
Python3: A4 の PDF を A3 の PDF に変換

0
1
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
1