mirror of
https://github.com/pretix/pretix.git
synced 2026-05-07 15:34:02 +00:00
Invoice rendering: Remove transparency from logos (Z#23179391) (#4762)
* Invoice rendering: Remove logos from transparency * Add comment
This commit is contained in:
@@ -388,6 +388,15 @@ class ClassicInvoiceRenderer(BaseReportlabInvoiceRenderer):
|
|||||||
except:
|
except:
|
||||||
logger.exception("Can not resize image")
|
logger.exception("Can not resize image")
|
||||||
pass
|
pass
|
||||||
|
try:
|
||||||
|
# Valid ZUGFeRD invoices must be compliant with PDF/A-3. pretix-zugferd ensures this by passing them
|
||||||
|
# through ghost script. Unfortunately, if the logo contains transparency, this will still fail.
|
||||||
|
# I was unable to figure out a way to fix this in GhostScript, so the easy fix is to remove the
|
||||||
|
# transparency, as our invoices always have a white background anyways.
|
||||||
|
ir.remove_transparency()
|
||||||
|
except:
|
||||||
|
logger.exception("Can not remove transparency from logo")
|
||||||
|
pass
|
||||||
canvas.drawImage(ir,
|
canvas.drawImage(ir,
|
||||||
self.logo_left,
|
self.logo_left,
|
||||||
self.pagesize[1] - self.logo_height - self.logo_top,
|
self.pagesize[1] - self.logo_height - self.logo_top,
|
||||||
|
|||||||
@@ -39,6 +39,12 @@ class ThumbnailingImageReader(ImageReader):
|
|||||||
self._data = None
|
self._data = None
|
||||||
return width, height
|
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):
|
def _jpeg_fh(self):
|
||||||
# Bypass a reportlab-internal optimization that falls back to the original
|
# 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
|
# file handle if the file is a JPEG, and therefore does not respect the
|
||||||
|
|||||||
Reference in New Issue
Block a user