from reportlab.lib.pagesizes import landscape, A3
from reportlab.pdfgen import canvas
from reportlab.lib.units import mm
# Percorso di salvataggio del PDF
pdf_path = "Tavole_4e5_Tipografia.pdf"
c = canvas.Canvas(pdf_path, pagesize=landscape(A3))
# Funzione per disegnare i margini
def draw_margins(x0, y0, width, height, margin):
c.setStrokeColorRGB(0.7, 0.7, 0.7)
c.rect(x0 + margin, y0 + margin, width - 2\*margin, height - 2\*margin)
# Parametri generali
page_w, page_h = landscape(A3)
margin = 20 * mm
# ------------------ TAVOLA 4 ------------------
c.setFont("Helvetica-Bold", 14)
c.drawString(40, page_h - 40, "TAVOLA 4 — GIUSTEZZA (COMPOSIZIONE GIUSTIFICATA)")
draw_margins(0, 0, page_w, page_h, margin)
# Colonne
col_width = (page_w - 2*margin - 20*mm) / 2
y_top = page_h - 80*mm
text_height = 60*mm
# Box sinistra
c.setStrokeColorRGB(0.5, 0.5, 0.5)
c.rect(margin, y_top, col_width, text_height)
c.setFont("Helvetica-Bold", 10)
c.drawString(margin, y_top + text_height + 10, "GIUSTIFICATO CON SILLABAZIONE")
c.setFont("Helvetica", 9)
c.drawString(margin, y_top - 15, "Con la sillabazione attiva, il margine destro è regolare e la lettura risulta fluida.")
# Box destra
x_right = margin + col_width + 20*mm
c.rect(x_right, y_top, col_width, text_height)
c.setFont("Helvetica-Bold", 10)
c.drawString(x_right, y_top + text_height + 10, "GIUSTIFICATO SENZA SILLABAZIONE")
c.setFont("Helvetica", 9)
c.drawString(x_right, y_top - 15, "Senza sillabazione, la spaziatura irregolare crea 'fiumi bianchi' e affatica la lettura.")
# Cartiglio
cart_h = 20*mm
c.setStrokeColorRGB(0.6, 0.6, 0.6)
c.rect(page_w - 100*mm, margin, 90*mm, cart_h)
c.setFont("Helvetica", 8)
c.drawString(page_w - 98*mm, margin + cart_h - 10, "TITOLO: GIUSTEZZA (COMPOSIZIONE GIUSTIFICATA)")
c.drawString(page_w - 98*mm, margin + cart_h - 20, "NOME: __________________ MATERIA: COMPETENZE GRAFICHE DATA: __/__/__")
c.showPage()
# ------------------ TAVOLA 5 ------------------
c.setFont("Helvetica-Bold", 14)
c.drawString(40, page_h - 40, "TAVOLA 5 — ALLINEAMENTO E SILLABAZIONE")
draw_margins(0, 0, page_w, page_h, margin)
# Colonne
col_w = (page_w - 2*margin - 3*15*mm) / 4
y_top = page_h - 80*mm
text_h = 60*mm
alignments = [
"A SINISTRA (BANDIERA DESTRA)",
"A DESTRA (BANDIERA SINISTRA)",
"CENTRATO",
"GIUSTIFICATO (SENZA SILLABAZIONE)"
]
comments = [
"Ideale per testi lunghi come romanzi o articoli.",
"Usato per brevi testi o note a margine.",
"Adatto a titoli o testi brevi.",
"Uniforma i margini ma può generare spazi irregolari."
]
x = margin
for i in range(4):
c.setStrokeColorRGB(0.5, 0.5, 0.5)
c.rect(x, y_top, col_w, text_h)
c.setFont("Helvetica-Bold", 9)
c.drawString(x, y_top + text_h + 10, alignments\[i\])
c.setFont("Helvetica", 8.5)
c.drawString(x, y_top - 15, comments\[i\])
x += col_w + 15\*mm
# Cartiglio
c.setStrokeColorRGB(0.6, 0.6, 0.6)
c.rect(page_w - 100*mm, margin, 90*mm, cart_h)
c.setFont("Helvetica", 8)
c.drawString(page_w - 98*mm, margin + cart_h - 10, "TITOLO: ALLINEAMENTO E SILLABAZIONE")
c.drawString(page_w - 98*mm, margin + cart_h - 20, "NOME: ____________________ MATER
IA: COMPETENZE GRAFICHE DATA: __/__/____")
c.save()
print(f"PDF generato: {pdf_path}")