Spaces:
Runtime error
Runtime error
Update utils.py
Browse files
utils.py
CHANGED
|
@@ -62,7 +62,7 @@ from reportlab.lib.pagesizes import inch, A4
|
|
| 62 |
from reportlab.platypus import SimpleDocTemplate, Frame, Spacer
|
| 63 |
from reportlab.lib import colors
|
| 64 |
from reportlab.lib.units import mm
|
| 65 |
-
from reportlab.platypus import Paragraph, SimpleDocTemplate, Frame, Image, Table
|
| 66 |
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
|
| 67 |
from reportlab.lib.units import cm
|
| 68 |
|
|
@@ -755,6 +755,38 @@ def create_picture(history, prompt):
|
|
| 755 |
########################################
|
| 756 |
# Ausgabe in PDF des Chathistory
|
| 757 |
########################################
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 758 |
#callback Methode, die auf jeder PDF Seite das Datum oben hinschreibt
|
| 759 |
def on_each_page(canvas, doc):
|
| 760 |
page_width, page_height = A4 # Oder das von Ihnen verwendete Seitenformat, z.B. A4
|
|
@@ -797,8 +829,9 @@ def erstellePdf(file_path_download, ueberschrift, dic_history):
|
|
| 797 |
# Einen Abstand hinzufügen (optional)
|
| 798 |
elements.append(Spacer(1, 2*mm))
|
| 799 |
elements.append(headline_assi)
|
| 800 |
-
|
| 801 |
-
|
|
|
|
| 802 |
# Einen Abstand hinzufügen (optional)
|
| 803 |
elements.append(Spacer(1, 8*mm))
|
| 804 |
#Trennlinie
|
|
|
|
| 62 |
from reportlab.platypus import SimpleDocTemplate, Frame, Spacer
|
| 63 |
from reportlab.lib import colors
|
| 64 |
from reportlab.lib.units import mm
|
| 65 |
+
from reportlab.platypus import Paragraph, SimpleDocTemplate, Frame, Image, Table, , ListFlowable, ListItem
|
| 66 |
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
|
| 67 |
from reportlab.lib.units import cm
|
| 68 |
|
|
|
|
| 755 |
########################################
|
| 756 |
# Ausgabe in PDF des Chathistory
|
| 757 |
########################################
|
| 758 |
+
#Aufzählungen in der History erkennen und auch als Auflistung darstellen
|
| 759 |
+
def erkennen_und_formatieren_von_aufzaehlungen(text, styles):
|
| 760 |
+
"""
|
| 761 |
+
Erkennt Aufzählungen im Text und gibt eine entsprechend formatierte ListFlowable oder Paragraph zurück.
|
| 762 |
+
"""
|
| 763 |
+
# Aufzählungszeichen oder Nummerierungen erkennen
|
| 764 |
+
aufzaehlungszeichen = ['-', '*', '•']
|
| 765 |
+
nummerierung = [f'{i}.' for i in range(1, 11)] # Beispiel für einfache Nummerierungserkennung
|
| 766 |
+
|
| 767 |
+
zeilen = text.split('\n')
|
| 768 |
+
list_items = []
|
| 769 |
+
|
| 770 |
+
for zeile in zeilen:
|
| 771 |
+
# Prüft, ob die Zeile mit einem Aufzählungszeichen oder einer Nummerierung beginnt
|
| 772 |
+
if any(zeile.lstrip().startswith(zeichen) for zeichen in aufzaehlungszeichen + nummerierung):
|
| 773 |
+
# Entfernt das Aufzählungszeichen/Nummerierung für die Darstellung
|
| 774 |
+
for zeichen in aufzaehlungszeichen + nummerierung:
|
| 775 |
+
if zeile.lstrip().startswith(zeichen):
|
| 776 |
+
zeile = zeile.lstrip()[len(zeichen):].lstrip()
|
| 777 |
+
break
|
| 778 |
+
list_items.append(ListItem(Paragraph(zeile, styles['BodyText'])))
|
| 779 |
+
else:
|
| 780 |
+
# Wenn die Zeile nicht als Teil einer Aufzählung erkannt wird, breche die Schleife ab
|
| 781 |
+
break
|
| 782 |
+
|
| 783 |
+
if list_items:
|
| 784 |
+
# Eine Aufzählung wurde erkannt
|
| 785 |
+
return ListFlowable(list_items, bulletType='bullet', start='bulletchar', bulletFontName='Helvetica')
|
| 786 |
+
else:
|
| 787 |
+
# Keine Aufzählung erkannt, gebe einen normalen Paragraph zurück
|
| 788 |
+
return Paragraph(text, styles['BodyText'])
|
| 789 |
+
|
| 790 |
#callback Methode, die auf jeder PDF Seite das Datum oben hinschreibt
|
| 791 |
def on_each_page(canvas, doc):
|
| 792 |
page_width, page_height = A4 # Oder das von Ihnen verwendete Seitenformat, z.B. A4
|
|
|
|
| 829 |
# Einen Abstand hinzufügen (optional)
|
| 830 |
elements.append(Spacer(1, 2*mm))
|
| 831 |
elements.append(headline_assi)
|
| 832 |
+
element_check = erkennen_und_formatieren_von_aufzaehlungen(assi, styles['NewStyle'])
|
| 833 |
+
#p = Paragraph(assi, styles['NewStyle'])
|
| 834 |
+
elements.append(element_check)
|
| 835 |
# Einen Abstand hinzufügen (optional)
|
| 836 |
elements.append(Spacer(1, 8*mm))
|
| 837 |
#Trennlinie
|