Browse Source

Cover added

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

+ 56 - 2
oloturia2pdf.py

@@ -4,6 +4,7 @@ from mastodon import Mastodon
 import json
 import datetime
 import os.path
+from reportlab.lib import pagesizes
 import requests
 import html2text
 import pdfkit
@@ -14,6 +15,52 @@ locale.setlocale(locale.LC_TIME, 'it_IT.UTF-8')
 
 
 
+
+
+def copertina(text):
+    from PyPDF2 import PdfFileWriter, PdfFileReader
+    import io
+    from reportlab.pdfgen import canvas
+    from reportlab.lib.pagesizes import A4
+    from reportlab.pdfbase import pdfmetrics
+    from reportlab.pdfbase.ttfonts import TTFont
+    from reportlab.pdfbase.pdfmetrics import stringWidth
+    from reportlab.rl_config import defaultPageSize
+
+    FONT = 'Roboto'
+    SIZE = 48
+
+    packet = io.BytesIO()
+    # create a new PDF with Reportlab
+
+    pdfmetrics.registerFont(TTFont("Roboto", "template/roboto-regular-webfont.ttf"))
+
+    can = canvas.Canvas(packet, pagesize=A4)
+    can.setFont(FONT, SIZE)
+
+    PAGE_WIDTH  = defaultPageSize[0]
+    #PAGE_HEIGHT = defaultPageSize[1]
+
+    text_width = stringWidth(text,FONT, SIZE)
+    can.drawString((PAGE_WIDTH - text_width) / 2, 150, text)
+    can.save()
+
+    #move to the beginning of the StringIO buffer
+    packet.seek(0)
+    new_pdf = PdfFileReader(packet)
+    # read your existing PDF
+    existing_pdf = PdfFileReader(open("copertina.pdf", "rb"))
+    output = PdfFileWriter()
+    # add the "watermark" (which is the new pdf) on the existing page
+    page = existing_pdf.getPage(0)
+    page.mergePage(new_pdf.getPage(0))
+
+    output.addPage(page)
+
+    return(page)
+
+
+
 # Scarica tutti i post da Mastodon
 
 print("Scarico i post")
@@ -157,13 +204,17 @@ with open('oloturiadump.json') as json_file:
 
 print("Genero i libretti")
 os.makedirs('books', exist_ok=True)
-for book_num in range(1, int(len(vgo_dict) / 50) + 2):
+for book_num in range(1, int(len(vgo_dict) / 50) + 1):
     pdfWriter = PyPDF2.PdfFileWriter()
     print(book_num)
 
+    pagstart = (book_num - 1) * 50 + 1
+    pagend = book_num * 50
+
     # aggiungere copertina
+    pdfWriter.addPage(copertina(str(pagstart).zfill(3) + " - " + str(pagend).zfill(3)))
 
-    for vgo_num in [str(x).zfill(3) for x in range((book_num - 1) * 50 + 1, book_num * 50 + 1)]:
+    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:
@@ -181,3 +232,6 @@ for book_num in range(1, int(len(vgo_dict) / 50) + 2):
     with open(book_name, 'wb') as pdfOutput:
         pdfWriter.write(pdfOutput)
 
+
+
+