From eeae05773e088d25fea61844c703c5fc8ea8a2f9 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Fri, 17 Jan 2025 17:27:33 +0100 Subject: [PATCH] Invoice rendering: Remove logos from transparency --- src/pretix/base/invoice.py | 5 +++++ src/pretix/helpers/reportlab.py | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/src/pretix/base/invoice.py b/src/pretix/base/invoice.py index ef9d00bf0..c19641ef0 100644 --- a/src/pretix/base/invoice.py +++ b/src/pretix/base/invoice.py @@ -388,6 +388,11 @@ class ClassicInvoiceRenderer(BaseReportlabInvoiceRenderer): except: logger.exception("Can not resize image") pass + try: + ir.remove_transparency() + except: + logger.exception("Can not remove transparency from logo") + pass canvas.drawImage(ir, self.logo_left, self.pagesize[1] - self.logo_height - self.logo_top, diff --git a/src/pretix/helpers/reportlab.py b/src/pretix/helpers/reportlab.py index b2af459c6..275d0205c 100644 --- a/src/pretix/helpers/reportlab.py +++ b/src/pretix/helpers/reportlab.py @@ -39,6 +39,12 @@ class ThumbnailingImageReader(ImageReader): self._data = None return width, height + def remove_transparency(self, background_color="WHITE"): + if "A" in self._image.mode: + new_image = Image.new("RGBA", self._image.size, background_color) + new_image.paste(self._image, mask=self._image) + self._image = new_image.convert("RGB") + def _jpeg_fh(self): # Bypass a reportlab-internal optimization that falls back to the original # file handle if the file is a JPEG, and therefore does not respect the