mirror of
https://github.com/pretix/pretix.git
synced 2026-05-18 17:24:03 +00:00
Try to adjust code
This commit is contained in:
@@ -1222,9 +1222,7 @@ class Renderer:
|
|||||||
|
|
||||||
for i, page in enumerate(fg_pdf.pages):
|
for i, page in enumerate(fg_pdf.pages):
|
||||||
bg_page = self.bg_pdf.pages[i]
|
bg_page = self.bg_pdf.pages[i]
|
||||||
_correct_page_media_box(bg_page)
|
_merge_with_correct_page_media_box(output, page, bg_page)
|
||||||
page.merge_page(bg_page, over=False)
|
|
||||||
output.add_page(page)
|
|
||||||
|
|
||||||
# pdf_header is a string like "%pdf-X.X"
|
# pdf_header is a string like "%pdf-X.X"
|
||||||
if float(self.bg_pdf.pdf_header[5:]) > float(fg_pdf.pdf_header[5:]):
|
if float(self.bg_pdf.pdf_header[5:]) > float(fg_pdf.pdf_header[5:]):
|
||||||
@@ -1291,8 +1289,7 @@ def merge_background(fg_pdf: PdfWriter, bg_pdf: PdfWriter, out_file, compress):
|
|||||||
else:
|
else:
|
||||||
for i, page in enumerate(fg_pdf.pages):
|
for i, page in enumerate(fg_pdf.pages):
|
||||||
bg_page = bg_pdf.pages[i]
|
bg_page = bg_pdf.pages[i]
|
||||||
_correct_page_media_box(bg_page)
|
_merge_with_correct_page_media_box(fg_pdf, page, bg_page)
|
||||||
page.merge_page(bg_page, over=False)
|
|
||||||
|
|
||||||
# pdf_header is a string like "%pdf-X.X"
|
# pdf_header is a string like "%pdf-X.X"
|
||||||
if float(bg_pdf.pdf_header[5:]) > float(fg_pdf.pdf_header[5:]):
|
if float(bg_pdf.pdf_header[5:]) > float(fg_pdf.pdf_header[5:]):
|
||||||
@@ -1301,27 +1298,18 @@ def merge_background(fg_pdf: PdfWriter, bg_pdf: PdfWriter, out_file, compress):
|
|||||||
fg_pdf.write(out_file)
|
fg_pdf.write(out_file)
|
||||||
|
|
||||||
|
|
||||||
def _correct_page_media_box(page: pypdf.PageObject):
|
def _merge_with_correct_page_media_box(output: pypdf.PdfWriter, fg_page: pypdf.PageObject, bg_page: pypdf.PageObject):
|
||||||
if page.rotation != 0:
|
if bg_page.rotation != 0:
|
||||||
page.transfer_rotation_to_content()
|
bg_page.transfer_rotation_to_content()
|
||||||
media_box = page.mediabox
|
media_box = bg_page.mediabox
|
||||||
trsf = pypdf.Transformation()
|
trsf = pypdf.Transformation()
|
||||||
if media_box.bottom != 0:
|
if media_box.bottom != 0:
|
||||||
trsf = trsf.translate(0, -media_box.bottom)
|
trsf = trsf.translate(0, -media_box.bottom)
|
||||||
if media_box.left != 0:
|
if media_box.left != 0:
|
||||||
trsf = trsf.translate(-media_box.left, 0)
|
trsf = trsf.translate(-media_box.left, 0)
|
||||||
page.add_transformation(trsf, False)
|
|
||||||
for b in ["/MediaBox", "/CropBox", "/BleedBox", "/TrimBox", "/ArtBox"]:
|
fg_page = output.add_page(fg_page)
|
||||||
if b in page:
|
fg_page.merge_transformed_page(bg_page, trsf, over=False, expand=False)
|
||||||
rr = pypdf.generic.RectangleObject(page[b])
|
|
||||||
pt1 = trsf.apply_on(rr.lower_left)
|
|
||||||
pt2 = trsf.apply_on(rr.upper_right)
|
|
||||||
page[pypdf.generic.NameObject(b)] = pypdf.generic.RectangleObject((
|
|
||||||
min(pt1[0], pt2[0]),
|
|
||||||
min(pt1[1], pt2[1]),
|
|
||||||
max(pt1[0], pt2[0]),
|
|
||||||
max(pt1[1], pt2[1]),
|
|
||||||
))
|
|
||||||
|
|
||||||
|
|
||||||
@deconstructible
|
@deconstructible
|
||||||
|
|||||||
@@ -55,7 +55,6 @@ from django.db.models.functions import Cast, Coalesce
|
|||||||
from django.utils.timezone import make_aware
|
from django.utils.timezone import make_aware
|
||||||
from django.utils.translation import gettext as _, gettext_lazy, pgettext_lazy
|
from django.utils.translation import gettext as _, gettext_lazy, pgettext_lazy
|
||||||
from pypdf import PageObject, PdfReader, PdfWriter, Transformation
|
from pypdf import PageObject, PdfReader, PdfWriter, Transformation
|
||||||
from pypdf.generic import RectangleObject
|
|
||||||
from reportlab.lib import pagesizes
|
from reportlab.lib import pagesizes
|
||||||
from reportlab.lib.units import inch, mm
|
from reportlab.lib.units import inch, mm
|
||||||
from reportlab.pdfgen import canvas
|
from reportlab.pdfgen import canvas
|
||||||
@@ -238,15 +237,8 @@ def _render_nup_page(nup_pdf: PdfWriter, input_pages: PageObject, opt: dict) ->
|
|||||||
di = i % badges_per_page
|
di = i % badges_per_page
|
||||||
tx = opt['margins'][3] + (di % opt['cols']) * opt['offsets'][0]
|
tx = opt['margins'][3] + (di % opt['cols']) * opt['offsets'][0]
|
||||||
ty = opt['margins'][2] + (opt['rows'] - 1 - (di // opt['cols'])) * opt['offsets'][1]
|
ty = opt['margins'][2] + (opt['rows'] - 1 - (di // opt['cols'])) * opt['offsets'][1]
|
||||||
page.add_transformation(Transformation().translate(tx, ty))
|
|
||||||
page.mediabox = RectangleObject((
|
|
||||||
Decimal('%.5f' % (page.mediabox.left.as_numeric() + tx)),
|
|
||||||
Decimal('%.5f' % (page.mediabox.bottom.as_numeric() + ty)),
|
|
||||||
Decimal('%.5f' % (page.mediabox.right.as_numeric() + tx)),
|
|
||||||
Decimal('%.5f' % (page.mediabox.top.as_numeric() + ty))
|
|
||||||
))
|
|
||||||
page.trimbox = page.cropbox = page.mediabox
|
page.trimbox = page.cropbox = page.mediabox
|
||||||
nup_page.merge_page(page)
|
nup_page.merge_transformed_page(page, Transformation().translate(tx, ty))
|
||||||
return nup_page
|
return nup_page
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user