How to combine 5 PDFs in one in the same page

Question:

I’m generating a lot of PDFs and for each 5 PDFs, I want to combine then on one page.

from pypdf import PdfMerger

merger = PdfMerger()

for pdf in ["out_mitry.pdf", "out_cdg.pdf"]:
    merger.append(pdf)

merger.write("result.pdf")
merger.close()

My actual result is getting the merge but every pdf is on one page.
I want to merge 5 pdf in one page

Asked By: Med

||

Answers:

I recently ran into a problem like this and found a solution.
I demonstrate solution for two one page files and you can easily extend it to any number of pdfs.

Let’s combine pages this way:

---------
|   |   |
| 1 | 2 |
|   |   |
---------
from pypdf import PdfWriter, PdfReader, PageObject, Transformation

pdf_filenames = ["out_mitry.pdf", "out_cdg.pdf"]

reader1 = PdfReader(pdf_filenames[0])
reader2 = PdfReader(pdf_filenames[1])

page1 = reader1.pages[0]
page2 = reader2.pages[0]

total_width = page1.mediabox.right + page2.mediabox.right
total_height = max([page1.mediabox.top, page2.mediabox.top])

new_page = PageObject.create_blank_page(width=total_width, height=total_height)

# Add first page at the 0,0 position
new_page.merge_page(page1)

# Add second page with moving along the axis x
page2.add_transformation(Transformation().translate(page1.mediabox.right, 0))
page2.mediabox = new_page.mediabox  # ensure it is visible
new_page.merge_page(page2)

writer = PdfWriter()
writer.add_page(new_page)
writer.write(open("result.pdf", "wb"))
Answered By: Alexander Nikitin
Categories: questions Tags: , , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.