itec78 2 years ago
parent
commit
de61cfa258
1 changed files with 54 additions and 1 deletions
  1. 54 1
      oloturia2pdf.py

+ 54 - 1
oloturia2pdf.py

@@ -57,6 +57,52 @@ def copertina(text):
 
     return(page)
 
+def indice(text):
+    # PDF GENERATION LIBRARIES
+    # import the report lab PDF generation tools
+    from reportlab.lib.pagesizes import letter
+    from reportlab.lib.styles import ParagraphStyle
+    from reportlab.lib.units import inch
+    from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, PageBreak
+    from reportlab.pdfbase import pdfmetrics
+    from reportlab.pdfbase.ttfonts import TTFont
+    from reportlab.lib.pagesizes import A5
+    import io
+    from PyPDF2 import PdfFileWriter, PdfFileReader
+
+    parts = []
+
+    pdfmetrics.registerFont(TTFont("Roboto", "template/roboto-regular-webfont.ttf"))
+    style = ParagraphStyle(
+        name='Normal',
+        fontName='Roboto',
+        fontSize=12,
+        leading = 14,
+        leftIndent=32,
+        firstLineIndent=-32,
+        spaceBefore=5
+    )
+
+    for ro in text.splitlines():
+        ro = ro.replace(' ',' ')
+        ro = ro.replace('\t','    ')
+        parts.append(Paragraph(ro, style = style))
+
+
+
+    packet = io.BytesIO()
+    doc = SimpleDocTemplate(packet,
+        pagesize=A5,
+        rightMargin=20,
+        leftMargin=20,
+        topMargin=40,
+        bottomMargin=30)
+    doc.build(parts)
+
+    pdfReader = PdfFileReader(packet)
+    return([pdfReader.getPage(0),pdfReader.getPage(1)])
+
+
 
 def main():
     # Scarica tutti i post da Mastodon
@@ -110,6 +156,8 @@ def main():
         for vgo in all_vgos:
             vgo_num = html2text.html2text(vgo['content']).split(' ')[0]
             vgo_name = os.linesep.join([s for s in html2text.html2text(vgo['content']).splitlines() if s]).splitlines()[-1]
+            if len(vgo_name) < 10:
+                vgo_name = [s for s in html2text.html2text(vgo['content']).split("\n\n") if s][-1].replace("\n"," ")
             #print(vgo_num +' - '+ vgo_name)
             #print(str(vgo['id']) +' '+ vgo['uri'])
             vgo_dict[vgo_num] = vgo_name
@@ -211,12 +259,14 @@ def main():
 
         # aggiungere copertina
         pdfWriter.addPage(copertina(str(pagstart).zfill(3) + " - " + str(pagend).zfill(3)))
-
+        
+        indtext = ""
         for vgo_num in [str(x).zfill(3) for x in range(pagstart, pagend + 1)]:
             pdf_name = os.path.join('pdf', vgo_num + '.pdf')
             
             try:
                 #print(vgo_num + " - " + vgo_dict[vgo_num])
+                indtext = indtext + vgo_num + "\t" + vgo_dict[vgo_num] + "\n"
                 pdfFileObj = open(pdf_name, 'rb')
                 pdfReader = PyPDF2.PdfFileReader(pdfFileObj)
                 pageObj = pdfReader.getPage(0)
@@ -225,6 +275,9 @@ def main():
                 pass
         
         # aggiungere indice ed eventualmente pagina finale
+        for indpag in indice(indtext):
+            pdfWriter.addPage(indpag)
+
         
         book_name = os.path.join('books', 'book' + str(book_num).zfill(2) + '.pdf')
         with open(book_name, 'wb') as pdfOutput: