1# Copyright (c) 2010-2024 openpyxl
2
3from openpyxl.descriptors.serialisable import Serialisable
4from openpyxl.descriptors import (
5 Float,
6 Typed,
7 Alias,
8)
9
10from openpyxl.worksheet.page import PrintPageSetup
11from openpyxl.worksheet.header_footer import HeaderFooter
12
13
14class PageMargins(Serialisable):
15 """
16 Identical to openpyxl.worksheet.page.Pagemargins but element names are different :-/
17 """
18 tagname = "pageMargins"
19
20 l = Float()
21 left = Alias('l')
22 r = Float()
23 right = Alias('r')
24 t = Float()
25 top = Alias('t')
26 b = Float()
27 bottom = Alias('b')
28 header = Float()
29 footer = Float()
30
31 def __init__(self, l=0.75, r=0.75, t=1, b=1, header=0.5, footer=0.5):
32 self.l = l
33 self.r = r
34 self.t = t
35 self.b = b
36 self.header = header
37 self.footer = footer
38
39
40class PrintSettings(Serialisable):
41
42 tagname = "printSettings"
43
44 headerFooter = Typed(expected_type=HeaderFooter, allow_none=True)
45 pageMargins = Typed(expected_type=PageMargins, allow_none=True)
46 pageSetup = Typed(expected_type=PrintPageSetup, allow_none=True)
47
48 __elements__ = ("headerFooter", "pageMargins", "pageMargins")
49
50 def __init__(self,
51 headerFooter=None,
52 pageMargins=None,
53 pageSetup=None,
54 ):
55 self.headerFooter = headerFooter
56 self.pageMargins = pageMargins
57 self.pageSetup = pageSetup