alexkueck commited on
Commit
6a5a08d
·
verified ·
1 Parent(s): f649ab3

Update utils.py

Browse files
Files changed (1) hide show
  1. utils.py +36 -3
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
- p = Paragraph(assi, styles['NewStyle'])
801
- elements.append(p)
 
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