feat: allow to specify page size per label sheet type

Also correct the default from `LETTER` to `A4`, since the
label sheets defined so far are actually `A4`.

Co-authored-by: gitolicious <26963495+gitolicious@users.noreply.github.com>
This commit is contained in:
Elias Probst
2023-11-16 00:46:29 +01:00
committed by gitolicious
parent f9d2cb4469
commit eca1a93c40

View File

@@ -1,7 +1,7 @@
import os
from collections.abc import Iterator
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import LETTER, landscape
from reportlab.lib.pagesizes import A4, landscape
from reportlab.lib.units import inch, mm, cm
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
@@ -22,20 +22,21 @@ from reportlab.pdfbase.ttfonts import TTFont
# label size w/h
# label gutter across/down
# page margins left/top
# page size w/h or name from reportlab.lib.pagesizes
labelInfo = {
# 2.6 x 1 address labels
5160: ( 3, 10, (187, 72), (11, 0), (14, 36)),
5161: ( 2, 10, (288, 72), (0, 0), (18, 36)),
5160: ( 3, 10, (187, 72), (11, 0), (14, 36), A4),
5161: ( 2, 10, (288, 72), (0, 0), (18, 36), A4),
# 4 x 2 address labels
5163: ( 2, 5, (288, 144), (0, 0), (18, 36)),
5163: ( 2, 5, (288, 144), (0, 0), (18, 36), A4),
# 1.75 x 0.5 return address labels
5167: ( 4, 20, (126, 36), (0, 0), (54, 36)),
5167: ( 4, 20, (126, 36), (0, 0), (54, 36), A4),
# 3.5 x 2 business cards
5371: ( 2, 5, (252, 144), (0, 0), (54, 36)),
5371: ( 2, 5, (252, 144), (0, 0), (54, 36), A4),
# 48x 45.7x21.2mm
4778: (4, 12, (45.7*mm, 21.2*mm), (0.25*cm, 0), (1.1*cm, 2*cm) ),
4778: (4, 12, (45.7*mm, 21.2*mm), (0.25*cm, 0), (1.1*cm, 2*cm), A4),
}
class AveryLabel:
@@ -49,7 +50,7 @@ class AveryLabel:
self.margins = data[4]
self.topDown = True
self.debug = False
self.pagesize = LETTER
self.pagesize = data[5]
self.position = 0
self.__dict__.update(kwargs)