mirror of
https://github.com/pretix/pretix.git
synced 2026-05-06 15:24:02 +00:00
Update pypdf requirement from ==3.9.* to ==4.2.* (#4159)
* Change PDF merging for compatibility with pypdf 4 * Update pypdf requirement from ==3.9.* to ==4.2.* * fix pypdf API-changes * fix missing removal of deepcopy * fix rotated PDF-backgrounds --------- Co-authored-by: Richard Schreiber <schreiber@rami.io>
This commit is contained in:
@@ -1093,32 +1093,33 @@ class Renderer:
|
||||
output = PdfWriter()
|
||||
|
||||
for i, page in enumerate(new_pdf.pages):
|
||||
bg_page = copy.deepcopy(self.bg_pdf.pages[i])
|
||||
bg_page = self.bg_pdf.pages[i]
|
||||
bg_rotation = bg_page.get('/Rotate')
|
||||
if bg_rotation:
|
||||
# page.merge_page loses /Rotate on page2 so we need to manually add it as a transformation
|
||||
# /Rotate is clockwise, transformation.rotate is counter-clockwise
|
||||
t = Transformation().rotate(bg_rotation)
|
||||
w = float(page.mediabox.getWidth())
|
||||
h = float(page.mediabox.getHeight())
|
||||
t = Transformation()
|
||||
w = bg_page.mediabox.width
|
||||
h = bg_page.mediabox.height
|
||||
if bg_rotation in (90, 270):
|
||||
# offset due to rotation base
|
||||
if bg_rotation == 90:
|
||||
t = t.translate(h, 0)
|
||||
t = t.rotate(270).translate(0, w)
|
||||
else:
|
||||
t = t.translate(0, w)
|
||||
t = t.rotate(90).translate(h, 0)
|
||||
# rotate mediabox as well
|
||||
page.mediabox = RectangleObject((
|
||||
page.mediabox.left.as_numeric(),
|
||||
page.mediabox.bottom.as_numeric(),
|
||||
page.mediabox.top.as_numeric(),
|
||||
page.mediabox.right.as_numeric(),
|
||||
bg_page.mediabox = RectangleObject((
|
||||
bg_page.mediabox.left.as_numeric(),
|
||||
bg_page.mediabox.bottom.as_numeric(),
|
||||
bg_page.mediabox.top.as_numeric(),
|
||||
bg_page.mediabox.right.as_numeric(),
|
||||
))
|
||||
page.trimbox = page.mediabox
|
||||
bg_page.trimbox = bg_page.mediabox
|
||||
elif bg_rotation == 180:
|
||||
t = t.translate(w, h)
|
||||
page.add_transformation(t)
|
||||
bg_page.merge_page(page)
|
||||
output.add_page(bg_page)
|
||||
t = t.rotate(180).translate(w, h)
|
||||
bg_page.add_transformation(t)
|
||||
page.merge_page(bg_page, over=False)
|
||||
output.add_page(page)
|
||||
|
||||
output.add_metadata({
|
||||
'/Title': str(title),
|
||||
@@ -1151,32 +1152,33 @@ def merge_background(fg_pdf, bg_pdf, out_file, compress):
|
||||
else:
|
||||
output = PdfWriter()
|
||||
for i, page in enumerate(fg_pdf.pages):
|
||||
bg_page = copy.deepcopy(bg_pdf.pages[i])
|
||||
bg_page = bg_pdf.pages[i]
|
||||
bg_rotation = bg_page.get('/Rotate')
|
||||
if bg_rotation:
|
||||
# page.merge_page loses /Rotate on page2 so we need to manually add it as a transformation
|
||||
# /Rotate is clockwise, transformation.rotate is counter-clockwise
|
||||
t = Transformation().rotate(bg_rotation)
|
||||
w = float(page.mediabox.getWidth())
|
||||
h = float(page.mediabox.getHeight())
|
||||
t = Transformation()
|
||||
w = bg_page.mediabox.width
|
||||
h = bg_page.mediabox.height
|
||||
if bg_rotation in (90, 270):
|
||||
# offset due to rotation base
|
||||
if bg_rotation == 90:
|
||||
t = t.translate(h, 0)
|
||||
t = t.rotate(270).translate(0, w)
|
||||
else:
|
||||
t = t.translate(0, w)
|
||||
t = t.rotate(90).translate(h, 0)
|
||||
# rotate mediabox as well
|
||||
page.mediabox = RectangleObject((
|
||||
page.mediabox.left.as_numeric(),
|
||||
page.mediabox.bottom.as_numeric(),
|
||||
page.mediabox.top.as_numeric(),
|
||||
page.mediabox.right.as_numeric(),
|
||||
bg_page.mediabox = RectangleObject((
|
||||
bg_page.mediabox.left.as_numeric(),
|
||||
bg_page.mediabox.bottom.as_numeric(),
|
||||
bg_page.mediabox.top.as_numeric(),
|
||||
bg_page.mediabox.right.as_numeric(),
|
||||
))
|
||||
page.trimbox = page.mediabox
|
||||
bg_page.trimbox = bg_page.mediabox
|
||||
elif bg_rotation == 180:
|
||||
t = t.translate(w, h)
|
||||
page.add_transformation(t)
|
||||
bg_page.merge_page(page)
|
||||
output.add_page(bg_page)
|
||||
t = t.rotate(180).translate(w, h)
|
||||
bg_page.add_transformation(t)
|
||||
page.merge_page(bg_page, over=False)
|
||||
output.add_page(page)
|
||||
output.write(out_file)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user