jqyDee / rechnungsprogramm

semi automatic invoice creation as well as book keeping
MIT License
0 stars 0 forks source link

PDF Creation crashes when table row triggers page break #31

Closed jqyDee closed 8 months ago

jqyDee commented 8 months ago

Bug that makes pdf creation not possible when one of the tables rows triggers page break. (Recreatable with HP Rechnung with first table row with 12 lines).

Error Code:

Exception in Tkinter callback
Traceback (most recent call last):
  File "/Users/mfischbach/.pyenv/versions/3.11.5/lib/python3.11/tkinter/__init__.py", line 1948,
 in __call__
    return self.func(*args)
           ^^^^^^^^^^^^^^^^
  File "/Users/mfischbach/Developer/Projects/Python/Rechnungsprogramm/venv/lib/python3.11/site-p
ackages/customtkinter/windows/widgets/ctk_button.py", line 554, in _clicked
    self._command()
  File "/Users/mfischbach/Developer/Projects/Python/Rechnungsprogramm/main.py", line 1610, in <l
ambda>
    self.parent.bottom_nav.bottom_nav_button.configure(command=lambda: self.hp_rechnung_erstelle
n_button_event())
                                                                       ^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^^^^^^^
  File "/Users/mfischbach/Developer/Projects/Python/Rechnungsprogramm/main.py", line 1958, in hp
_rechnung_erstellen_button_event
    if self.validate_hp_entrys():
       ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/mfischbach/Developer/Projects/Python/Rechnungsprogramm/main.py", line 2099, in va
lidate_hp_entrys
    if self.create_hp_pdf():
       ^^^^^^^^^^^^^^^^^^^^
  File "/Users/mfischbach/Developer/Projects/Python/Rechnungsprogramm/main.py", line 2139, in cr
eate_hp_pdf
    HpRechnung(self.stammdaten, self.rechnungsnummer, self.rechnungsdatum, self.gesamtpreis,
  File "/Users/mfischbach/Developer/Projects/Python/Rechnungsprogramm/main.py", line 3893, in __
init__
    self.create_pages(filepath)
  File "/Users/mfischbach/Developer/Projects/Python/Rechnungsprogramm/main.py", line 4110, in cr
eate_pages
    self.output(filepath)
  File "/Users/mfischbach/Developer/Projects/Python/Rechnungsprogramm/venv/lib/python3.11/site-p
ackages/fpdf/fpdf.py", line 4970, in output
    self.buffer = output_producer.bufferize()
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/mfischbach/Developer/Projects/Python/Rechnungsprogramm/venv/lib/python3.11/site-p
ackages/fpdf/output.py", line 429, in bufferize
    struct_elem.pg = page_objs[struct_elem.page_number() - 1]
                     ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
IndexError: list index out of range
jqyDee commented 8 months ago

added check in HpRechnung.prepare_data which triggers a pagebreak if a certain number of lines in the table has been surpassed! If surpassed it triggers a pagebreak and renders a second table on the created page!