Höhen noch genauer approximieren
Bernd Wurst

Bernd Wurst commited on 2009-02-13 16:11:18
Zeige 1 geänderte Dateien mit 16 Einfügungen und 3 Löschungen.

... ...
@@ -143,19 +143,29 @@ def InvoiceToPDF(iv):
143 143
         left += 1.5*cm
144 144
         right -= 1.5*cm
145 145
         height += len(part.paragraphs) * 3 * line_padding
146
+        # Rechne eine Zeile mehr für den Rahmen
147
+        height += line_height
146 148
       if part.headline:
147 149
         height += (len(_splitToWidth(canvas, part.headline, right-left, font+'-Bold', default_font_size+1)) * line_height) + line_padding
148 150
       for para in part.paragraphs:  
149 151
         height += (len(_splitToWidth(canvas, para, right-left, font, default_font_size)) * line_height) + line_padding
150 152
     elif type(part) == Invoice.Table:
151
-      height = line_height
153
+      # Eine Zeile plus 2 mal line_padding für Tabellenkopf
154
+      height = line_height + 2 * line_padding
152 155
       for el in part.entries:
156
+        # Die Abstände oben und unten
157
+        height += 2 * line_padding
153 158
         # Die Breite ist konservativ
154 159
         height += line_height*len(_splitToWidth(canvas, el['subject'], 9.3*cm, font, font_size))
155 160
         if 'desc' in el and el['desc'] != '':
156 161
           height += line_height * len(_splitToWidth(canvas, el['desc'], 11*cm, font, font_size))
157
-      # 4 Zeilen sollten reichen für die Summen
158
-      height += line_height * 4
162
+      if part.vatType == 'net':
163
+        # Eine Zeile mehr
164
+        height += line_height + line_padding
165
+      # Für die MwSt-Summen
166
+      height += (line_height + line_padding) * len(part.vat)
167
+      # Für den Rechnungsbetrag
168
+      height += line_height + line_padding
159 169
     return height
160 170
 
161 171
 
... ...
@@ -226,6 +236,9 @@ def InvoiceToPDF(iv):
226 236
       canvas.setFont(font, font_size-2)
227 237
       canvas.drawCentredString(leftcontent + (rightcontent - leftcontent) / 2, y, '- Seite %i -' % num_pages)
228 238
       y -= line_padding*3
239
+    # Debug: Was hat die Höhenbestimmung für diesen Teil als Höhe herausgefunden?
240
+    #canvas.line(leftcontent, y-_partHeight(part), rightcontent, y-_partHeight(part))
241
+
229 242
     if type(part) == Invoice.Table:
230 243
         
231 244
       left = leftcontent
232 245