Skip to content

Instantly share code, notes, and snippets.

@normanius
Forked from Geekfish/merge_pdfs.py
Last active April 5, 2023 08:15
Show Gist options
  • Save normanius/c772c40850c0ab18ef68b153426f2b32 to your computer and use it in GitHub Desktop.
Save normanius/c772c40850c0ab18ef68b153426f2b32 to your computer and use it in GitHub Desktop.
pyPDF2: Merge 2 PDF pages into one side by side
import sys
from pathlib import Path
from itertools import zip_longest
from PyPDF2 import PdfWriter, PdfReader, PageObject
def merge_two_into_one(in_path, out_path, force=False):
in_path = Path(in_path)
out_dir = Path(out_dir)
writer = PdfWriter()
reader = PdfReader(in_path)
def grouper(iterable, n, fillvalue=None):
args = [iter(iterable)] * n
return zip_longest(*args, fillvalue=fillvalue)
for i, (page1, page2) in enumerate(grouper(reader.pages, n=2)):
merged = PageObject.createBlankPage(None,
2*page1.mediaBox.getWidth(),
page1.mediaBox.getHeight())
merged.mergePage(page1)
if page2 is not None:
merged.mergeScaledTranslatedPage(page2, 1, page1.mediaBox.getWidth(), 0)
writer.addPage(merged)
with open(out_path, "wb") as out_file:
writer.write(out_file)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment