Объединение нескольких страниц PDF в одностраничный PDF

Итак, у меня есть многостраничный PDF-файл, который выглядит примерно так

многостраничный

В настоящее время это более одной страницы, но я хотел бы объединить. Эти две страницы должны быть объединены таким образом, чтобы они стали одной страницей. (Буквально соединяя две страницы, избавляясь от серой области между ними.

серая область, которую нужно убрать Я глубоко копался в pypdf2 и pdf2image, но не пока не повезло. Мне было интересно узнать о какой-либо функции, которая могла бы помочь мне достичь этого?


person skspawn    schedule 15.12.2019    source источник
comment
Пожалуйста, опишите подробнее, что должно получиться в итоге. Вы хотите один JPEG с обеими страницами? Одностраничный PDF-файл с двумя уменьшенными версиями исходных страниц? Вы хотите, чтобы новая страница была в книжной или альбомной ориентации?   -  person Josh    schedule 16.12.2019
comment
Новый PDF-файл с размерами, представляющими собой сумму длин с постоянной шириной   -  person skspawn    schedule 16.12.2019
comment
Это хорошее уточнение. Как правило, лучше всего вносить уточнения в исходный вопрос, чтобы будущие читатели/ответы могли прочитать всю информацию в одном месте, вместо того, чтобы копаться в комментариях, чтобы выяснить основной вопрос. Этот вопрос может быть спорным, так как похоже, что у вас уже есть ответ.   -  person Josh    schedule 16.12.2019
comment
извините за это, я новичок в сообществе   -  person skspawn    schedule 16.12.2019
comment
Не волнуйтесь. Мне дали такой же совет по моему первому вопросу.   -  person Josh    schedule 17.12.2019


Ответы (1)


Вы можете создать новый объект страницы, который в два раза длиннее первого (при условии, что обе страницы имеют одинаковую высоту) и поместить страницы одну за другой на новую страницу.

from PyPDF2 import PdfFileReader, PdfFileWriter
from PyPDF2.pdf import PageObject


reader = PdfFileReader(open("file.pdf",'rb'))

page_1 = reader.getPage(0)
page_2 = reader.getPage(1)

#Creating a new file double the size of the original
translated_page = PageObject.createBlankPage(None, page_1.mediaBox.getWidth(), page_1.mediaBox.getHeight()*2)

#Adding the pages to the new empty page
translated_page.mergeScaledTranslatedPage(page_1, 1, 0, page_1.mediaBox.getHeight())
translated_page.mergePage(page_2)

writer = PdfFileWriter()
writer.addPage(translated_page)

with open('out.pdf', 'wb') as f:
    writer.write(f)

Если они разной высоты, просто сделайте

translated_page = PageObject.createBlankPage(None, page_1.mediaBox.getWidth(), page_1.mediaBox.getHeight()+ page_2.mediaBox.getHeight())
person 3141bishwa    schedule 15.12.2019