diff --git a/example.pdf b/example.pdf index 0cddb46..79cf9de 100644 Binary files a/example.pdf and b/example.pdf differ diff --git a/pyproject.toml b/pyproject.toml index 136a3c3..9ecb4d2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "red-tape-kit" -version = "0.4.0" +version = "0.5.0" description = "" authors = ["Your Name "] readme = "README.md" diff --git a/red_tape_kit/pdf.py b/red_tape_kit/pdf.py index c6f1ab8..6641f9e 100644 --- a/red_tape_kit/pdf.py +++ b/red_tape_kit/pdf.py @@ -13,20 +13,24 @@ class FPDFRenderer(FPDF): DEFAULT_LINE_HEIGHT = 1.5 # relative to font size - default_font_family = 'helvetica' + DEFAULT_FONT_FAMILY = 'helvetica' + DEFAULT_FONT_SIZE = 10 # pt + MARGIN_LEFT = 20 # mm + MARGIN_RIGHT = 20 # mm + MARGIN_TOP = 20 # mm + MARGIN_BOTTOM = 20 # mm UNORDERED_LIST_BULLET = '-' def __init__(self, document, **kwargs): super().__init__(**kwargs, unit='mm', format='A4') self.document = document self.add_fonts() - self.set_left_margin(20) - self.set_right_margin(20) self.set_meta() + self.configure_margins() self.add_cover() common_section_style_kwargs = dict( - font_family=self.default_font_family, + font_family=self.DEFAULT_FONT_FAMILY, b_margin=5, ) self.set_section_title_styles( @@ -46,7 +50,6 @@ def __init__(self, document, **kwargs): **common_section_style_kwargs, ), ) - self.add_page() self.add_body() def set_meta(self): @@ -57,14 +60,20 @@ def set_meta(self): self.set_creator(self.document.creator.plain_string) self.set_creation_date(self.document.creation_date) + def configure_margins(self): + self.set_left_margin(self.MARGIN_LEFT) + self.set_right_margin(self.MARGIN_RIGHT) + self.set_top_margin(self.MARGIN_TOP) + self.set_auto_page_break(True, self.MARGIN_BOTTOM) + def add_cover(self): self.add_page() self.set_y(140) self.set_x(60) - self.set_font(self.default_font_family, size=24) + self.set_font(self.DEFAULT_FONT_FAMILY, size=24) self.add_inline_element(self.document.title) self.ln(self.get_line_height()) - self.set_font(self.default_font_family, size=12) + self.set_font(self.DEFAULT_FONT_FAMILY, size=12) self.set_x(60) self.add_inline_element(self.document.subject) self.ln(self.get_line_height()) @@ -75,7 +84,8 @@ def add_cover(self): self.cell_nl(text=self.document.creation_place_and_date) def add_body(self): - self.set_font(self.default_font_family, size=10) + self.add_page() + self.set_font(self.DEFAULT_FONT_FAMILY, size=self.DEFAULT_FONT_SIZE) self.add_element(self.document.body, level=0) def add_element(self, element, level): @@ -213,7 +223,7 @@ def footer(self): # Position cursor at 1.5 cm from bottom: self.set_y(-15) # page number - self.set_font(self.default_font_family, size=8) + self.set_font(self.DEFAULT_FONT_FAMILY, size=8) self.cell(0, 10, f"Strona {self.page_no()}/{{nb}}", align="C") def add_fonts(self):