import os
from reportlab.lib.pagesizes import letter
from reportlab.lib import colors
from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle, HRFlowable
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import inch

pdf_path = "/home/magdalena/eee/alunos/alberico-de-carvalho-santiago/Guia_Cavernas_Saveiro_6_30m_Escala_1_25.pdf"

doc = SimpleDocTemplate(
    pdf_path,
    pagesize=letter,
    rightMargin=36,
    leftMargin=36,
    topMargin=36,
    bottomMargin=36
)

styles = getSampleStyleSheet()

primary_color = colors.HexColor("#0F2B48")
secondary_color = colors.HexColor("#B45309")
dark_neutral = colors.HexColor("#1E293B")
light_neutral = colors.HexColor("#F8FAFC")
border_color = colors.HexColor("#CBD5E1")

title_style = ParagraphStyle(
    'DocTitle',
    parent=styles['Heading1'],
    fontName='Helvetica-Bold',
    fontSize=14,
    leading=18,
    textColor=primary_color,
    alignment=1,
    spaceAfter=3
)

subtitle_style = ParagraphStyle(
    'DocSubtitle',
    parent=styles['Normal'],
    fontName='Helvetica',
    fontSize=8.5,
    leading=11,
    textColor=secondary_color,
    alignment=1,
    spaceAfter=6
)

section_heading = ParagraphStyle(
    'SectionHeading',
    parent=styles['Heading2'],
    fontName='Helvetica-Bold',
    fontSize=10,
    leading=13,
    textColor=primary_color,
    spaceBefore=5,
    spaceAfter=3
)

body_style = ParagraphStyle(
    'BodyDark',
    parent=styles['Normal'],
    fontName='Helvetica',
    fontSize=8,
    leading=11,
    textColor=dark_neutral,
    spaceAfter=2
)

bullet_style = ParagraphStyle(
    'BulletDark',
    parent=body_style,
    leftIndent=10,
    firstLineIndent=-7,
    spaceAfter=2
)

table_header_style = ParagraphStyle(
    'TableHeader',
    parent=styles['Normal'],
    fontName='Helvetica-Bold',
    fontSize=7.5,
    leading=9.5,
    textColor=colors.white
)

table_body_style = ParagraphStyle(
    'TableBody',
    parent=styles['Normal'],
    fontName='Helvetica',
    fontSize=7.2,
    leading=9.2,
    textColor=dark_neutral
)

table_body_bold = ParagraphStyle(
    'TableBodyBold',
    parent=styles['Normal'],
    fontName='Helvetica-Bold',
    fontSize=7.2,
    leading=9.2,
    textColor=primary_color
)

story = []

# Cabeçalho
story.append(Paragraph("SAVEIRO 6,30 M — TABELA DE CAVERNAS NA ESCALA 1:25", title_style))
story.append(Paragraph("<b>Adaptação Proporcional da Prancha 9M para Saveiro 6,30 m (Modelo 25,2 cm)</b><br/><b>Aluno:</b> Alberico de Carvalho Santiago | <b>Instituição:</b> Brana / Estaleiro Escola Embrião (EEE)", subtitle_style))
story.append(HRFlowable(width="100%", thickness=1.5, color=secondary_color, spaceAfter=5))

story.append(Paragraph("1. Fatores de Escala e Montagem (Escala 1:25)", section_heading))
story.append(Paragraph(
    "Para transformar o projeto do Saveiro de 9,00 m no <b>Saveiro de 6,30 metros na Escala 1:25</b>:<br/>"
    "• <b>Comprimento do Modelo:</b> <b>25,2 cm (252 mm)</b> de proa a popa.<br/>"
    "• <b>Espaçamento entre Balizas no Picadeiro:</b> exatamente <b>2,52 cm (25,2 mm)</b> entre cada uma das 11 estações.<br/>"
    "• <b>Regra de Escala:</b> Cada 1 metro real do barco vira <b>4,0 centímetros</b> no modelo.",
    body_style
))

# Tabela 1:25 para Saveiro 6,30m
t_data = [
    [Paragraph("Estação (STA)", table_header_style), Paragraph("Boca Real (m)", table_header_style), Paragraph("Boca Topo 1:25 (cm)", table_header_style), Paragraph("Fundo Chato 1:25 (cm)", table_header_style), Paragraph("Altura 1:25 (cm)", table_header_style), Paragraph("Deadrise", table_header_style)],
    [Paragraph("STA 0 (Proa)", table_body_bold), Paragraph("0,84 m", table_body_style), Paragraph("<b>3,36 cm</b> (±1,68 cm)", table_body_style), Paragraph("2,24 cm (±1,12 cm)", table_body_style), Paragraph("1,68 cm", table_body_style), Paragraph("35°", table_body_style)],
    [Paragraph("STA 1", table_body_bold), Paragraph("1,26 m", table_body_style), Paragraph("<b>5,04 cm</b> (±2,52 cm)", table_body_style), Paragraph("3,36 cm (±1,68 cm)", table_body_style), Paragraph("2,10 cm", table_body_style), Paragraph("28°", table_body_style)],
    [Paragraph("STA 2", table_body_bold), Paragraph("1,68 m", table_body_style), Paragraph("<b>6,72 cm</b> (±3,36 cm)", table_body_style), Paragraph("4,48 cm (±2,24 cm)", table_body_style), Paragraph("2,52 cm", table_body_style), Paragraph("22°", table_body_style)],
    [Paragraph("STA 3", table_body_bold), Paragraph("2,10 m", table_body_style), Paragraph("<b>8,40 cm</b> (±4,20 cm)", table_body_style), Paragraph("5,60 cm (±2,80 cm)", table_body_style), Paragraph("2,80 cm", table_body_style), Paragraph("18°", table_body_style)],
    [Paragraph("STA 4", table_body_bold), Paragraph("2,52 m", table_body_style), Paragraph("<b>10,08 cm</b> (±5,04 cm)", table_body_style), Paragraph("6,72 cm (±3,36 cm)", table_body_style), Paragraph("3,08 cm", table_body_style), Paragraph("15°", table_body_style)],
    [Paragraph("STA 5 (Mestra)", table_body_bold), Paragraph("2,94 m", table_body_style), Paragraph("<b>11,76 cm</b> (±5,88 cm)", table_body_style), Paragraph("7,84 cm (±3,92 cm)", table_body_style), Paragraph("3,36 cm", table_body_style), Paragraph("12°", table_body_style)],
    [Paragraph("STA 6 (Meia-Nau)", table_body_bold), Paragraph("2,94 m", table_body_style), Paragraph("<b>11,76 cm</b> (±5,88 cm)", table_body_style), Paragraph("7,84 cm (±3,92 cm)", table_body_style), Paragraph("3,36 cm", table_body_style), Paragraph("12°", table_body_style)],
    [Paragraph("STA 7", table_body_bold), Paragraph("2,80 m", table_body_style), Paragraph("<b>11,20 cm</b> (±5,60 cm)", table_body_style), Paragraph("7,56 cm (±3,78 cm)", table_body_style), Paragraph("3,22 cm", table_body_style), Paragraph("13°", table_body_style)],
    [Paragraph("STA 8", table_body_bold), Paragraph("2,52 m", table_body_style), Paragraph("<b>10,08 cm</b> (±5,04 cm)", table_body_style), Paragraph("6,72 cm (±3,36 cm)", table_body_style), Paragraph("3,08 cm", table_body_style), Paragraph("15°", table_body_style)],
    [Paragraph("STA 9", table_body_bold), Paragraph("1,96 m", table_body_style), Paragraph("<b>7,84 cm</b> (±3,92 cm)", table_body_style), Paragraph("5,04 cm (±2,52 cm)", table_body_style), Paragraph("2,66 cm", table_body_style), Paragraph("18°", table_body_style)],
    [Paragraph("STA 10 (Popa)", table_body_bold), Paragraph("1,40 m", table_body_style), Paragraph("<b>5,60 cm</b> (±2,80 cm)", table_body_style), Paragraph("3,64 cm (±1,82 cm)", table_body_style), Paragraph("2,24 cm", table_body_style), Paragraph("22°", table_body_style)]
]

t_table = Table(t_data, colWidths=[1.3*inch, 1.1*inch, 1.5*inch, 1.5*inch, 1.1*inch, 0.9*inch])
t_table.setStyle(TableStyle([
    ('BACKGROUND', (0,0), (-1,0), primary_color),
    ('ALIGN', (0,0), (-1,-1), 'LEFT'),
    ('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
    ('GRID', (0,0), (-1,-1), 0.5, border_color),
    ('ROWBACKGROUNDS', (0,1), (-1,-1), [light_neutral, colors.white]),
    ('TOPPADDING', (0,0), (-1,-1), 2),
    ('BOTTOMPADDING', (0,0), (-1,-1), 2),
]))
story.append(t_table)
story.append(Spacer(1, 4))

story.append(Paragraph("2. Montagem Prática no Picadeiro", section_heading))
story.append(Paragraph("1. Trace uma linha guia de <b>25,2 cm</b> sobre uma régua ou base de madeira nivelada.", bullet_style))
story.append(Paragraph("2. Marque 11 traços com <b>2,52 cm de distância</b> entre cada estação (STA 0 na marca 0 cm até STA 10 na marca 25,2 cm).", bullet_style))
story.append(Paragraph("3. Cole as cavernas cortadas sobre a linha de fundo chato e você terá o esqueleto 3D perfeito do Saveiro de 6,30 m pronto para receber as ripas ou o revestimento!", bullet_style))

doc.build(story)
print("PDF Saveiro 6.30m Escala 1:25 gerado com sucesso!")
