diff --git a/src/pretix/base/invoice.py b/src/pretix/base/invoice.py index bdc9836de..2a851eda0 100644 --- a/src/pretix/base/invoice.py +++ b/src/pretix/base/invoice.py @@ -282,19 +282,30 @@ class ClassicInvoiceRenderer(BaseReportlabInvoiceRenderer): preserveAspectRatio=True, anchor='n', mask='auto') + def shorten(txt): + txt = str(txt) + p = Paragraph(txt.strip().replace('\n', '
\n'), style=self.stylesheet['Normal']) + p_size = p.wrap(65 * mm, 50 * mm) + + while p_size[1] > 2 * self.stylesheet['Normal'].leading: + txt = ' '.join(txt.replace('…', '').split()[:-1]) + '…' + p = Paragraph(txt.strip().replace('\n', '
\n'), style=self.stylesheet['Normal']) + p_size = p.wrap(65 * mm, 50 * mm) + return txt + if not self.invoice.event.has_subevents: if self.invoice.event.settings.show_date_to: p_str = ( - str(self.invoice.event.name) + '\n' + pgettext('invoice', '{from_date}\nuntil {to_date}').format( + shorten(self.invoice.event.name) + '\n' + pgettext('invoice', '{from_date}\nuntil {to_date}').format( from_date=self.invoice.event.get_date_from_display(), to_date=self.invoice.event.get_date_to_display()) ) else: p_str = ( - str(self.invoice.event.name) + '\n' + self.invoice.event.get_date_from_display() + shorten(self.invoice.event.name) + '\n' + self.invoice.event.get_date_from_display() ) else: - p_str = str(self.invoice.event.name) + p_str = shorten(self.invoice.event.name) p = Paragraph(p_str.strip().replace('\n', '
\n'), style=self.stylesheet['Normal']) p.wrapOn(canvas, 65 * mm, 50 * mm)