У меня есть два PDF-файла, которые мне нужно объединить в один, шириной 1 на 2 высоты. Если вы слышали о карточке для палатки, то она производит карточку для палатки в формате PDF.
У меня есть следующий скрипт, который выполняет различные части по отдельности, но не создает настоящий PDF с правильным вращением. Представьте себе фасет 5 "x5", производящий PDF 5 "x10", верхнюю половину вверх ногами:
- - - - -
| |
| |
| | < Upside-down "back"
| |
| |
- - - - - < Imaginary line
| |
| |
| | < Right-side up "front
| |
| |
- - - - -
Используя PyPDF2, кажется, что это будет легко, но хотя я смог чтобы заставить части работать (вращение, перевод, назад выше фронта, двойная высота на одну ширину), я не был в состоянии заставить их всех работать вместе.
Закомментированные строки - это другие вещи, которые я пробовал, которые, кажется, создают пустую верхнюю часть страницы, где должен быть «задний ход», при этом «передний край» правильно отображается / ориентируется нормально, только в нижняя часть x2 height translated_page
outfile.
#!/usr/bin/python3
import PyPDF2
from PyPDF2.pdf import PageObject
front_reader = PyPDF2.PdfFileReader(open('front.pdf', 'rb'))
front = front_reader.getPage(0)
back_reader = PyPDF2.PdfFileReader(open('back.pdf', 'rb'))
back = back_reader.getPage(0)
tent_height = front.mediaBox.getHeight() + back.mediaBox.getHeight()
translated_page = PageObject.createBlankPage(None, back.mediaBox.getWidth(), tent_height)
# translated_page.mergeScaledTranslatedPage(back, 1, 0, front.mediaBox.getHeight())
# translated_page.mergeRotatedTranslatedPage(back, 180, 0, 0)
translated_page.mergeRotatedPage(back, 180)
translated_page.mergePage(front)
writer = PyPDF2.PdfFileWriter()
writer.addPage(translated_page)
with open('out.pdf', 'wb') as outfile:
writer.write(outfile)
Вот файлы, на которые есть ссылки выше. Чего мне не хватает?
http://jf.dialogs.com/pdf-rotate-pypdf2.zip