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/Projeto_Executivo_Catamara_Gondola_8_5m.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("#0284C7")
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=15,
    leading=19,
    textColor=primary_color,
    alignment=1,
    spaceAfter=3
)

subtitle_style = ParagraphStyle(
    'DocSubtitle',
    parent=styles['Normal'],
    fontName='Helvetica',
    fontSize=9,
    leading=12,
    textColor=secondary_color,
    alignment=1,
    spaceAfter=8
)

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

body_style = ParagraphStyle(
    'BodyDark',
    parent=styles['Normal'],
    fontName='Helvetica',
    fontSize=8.2,
    leading=11.5,
    textColor=dark_neutral,
    spaceAfter=3
)

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.8,
    leading=9.5,
    textColor=colors.white
)

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

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

story = []

# Cabeçalho
story.append(Paragraph("PROJETO TÉCNICO EXECUTIVO COMPLETO", title_style))
story.append(Paragraph("<b>Catamarã Pesqueiro 8,50 m × 3,60 m com Gôndola Central e Motor Único</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=6))

# 1. Arranjo Geral
story.append(Paragraph("1. Arranjo Geral de Convés e Gôndola Central", section_heading))
story.append(Paragraph(
    "A configuração une a estabilidade de plataforma e o espaço do catamarã com a simplicidade mecânica do motor de centro único. "
    "A <b>Gôndola Central (Nacela)</b> desce suavemente da meia-nau (x = 4,5 m) até a popa (x = 0,0 m), alojando o motor diesel de 30 a 50 CV, linha de eixo e leme. "
    "Com isso, os semi-cascos laterais ficam 100% livres para 4 beliches confortáveis na vante e 2 porões térmicos de peixe na ré (500 kg cada).",
    body_style
))

# 2. Laminação
story.append(Paragraph("2. Especificação de Estrutura e Laminação em Fibra (PRFV)", section_heading))
lam_data = [
    [Paragraph("Elemento Estrutural", table_header_style), Paragraph("Composição do Laminado (PRFV)", table_header_style), Paragraph("Espessura Final", table_header_style), Paragraph("Função Estrutural", table_header_style)],
    [Paragraph("Casca Externa (Fundo / Quilha)", table_body_bold), Paragraph("Gelcoat Isoftálico + 2x Manta 450g + 3x Biaxial 600g", table_body_style), Paragraph("9,0 a 10,5 mm", table_body_style), Paragraph("Resistência a impacto, corte de ondas e encalhe.", table_body_style)],
    [Paragraph("Costados e Túnel", table_body_bold), Paragraph("Sandwich: Manta 450g + Divinycell 15mm + Biaxial 600g", table_body_style), Paragraph("18,0 mm total", table_body_style), Paragraph("Altíssima rigidez com peso estrutural reduzido.", table_body_style)],
    [Paragraph("Vigas da Ponte / Cavernas", table_body_bold), Paragraph("Caixas de PRFV maciço com Roving Unidirecional", table_body_style), Paragraph("12,0 mm", table_body_style), Paragraph("Absorção do momento fletor e torção do catamarã.", table_body_style)],
    [Paragraph("Gôndola do Motor", table_body_bold), Paragraph("PRFV sólido reforçado (4x Biaxial 800g/m²)", table_body_style), Paragraph("12,0 a 14,0 mm", table_body_style), Paragraph("Suporte aos coxins do motor e tração do hélice.", table_body_style)]
]
t_lam = Table(lam_data, colWidths=[1.5*inch, 2.7*inch, 1.0*inch, 2.2*inch])
t_lam.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_lam)
story.append(Spacer(1, 4))

# 3. Picadeiro
story.append(Paragraph("3. Plano de Picadeiro e Montagem das Cavernas na Oficina", section_heading))
story.append(Paragraph("• <b>Nivelamento do Picadeiro:</b> Montar 2 vigas longitudinais niveladas para o suporte dos moldes de madeira compensada de 15 mm espaçados a cada 1,0 metro.", bullet_style))
story.append(Paragraph("• <b>Alinhamento com Linha d'Água (WL = 0):</b> Todas as cavernas e o molde da gôndola possuem a marcação horizontal da WL, garantindo o esquadro exato e o vão livre do túnel (clearance de 0,58 m).", bullet_style))
story.append(Paragraph("• <b>Instalação da Gôndola:</b> Montada integrada às cavernas B0 a B4, permitindo laminação contínua e monolítica com o fundo do túnel central.", bullet_style))
story.append(Spacer(1, 4))

# 4. Propulsão
story.append(Paragraph("4. Propulsão, Consumo e Vantagens da Gôndola Central", section_heading))
story.append(Paragraph("• <b>Motor Único:</b> Diesel de Centro de <b>30 a 50 CV</b> (ex: Yanmar 3JH / Agrale M93 / MWM).", bullet_style))
story.append(Paragraph("• <b>Consumo Estimado:</b> <b>~2,8 a 3,5 Litros/hora</b> a 7,0 nós de cruzeiro.", bullet_style))
story.append(Paragraph("• <b>Manutenção:</b> Reduz pela metade os custos de filtro, óleo, anodos de sacrifício, retentores e linha de eixo em relação à motorização dupla.", bullet_style))

doc.build(story)
print("PDF Executivo Gondola gerado com sucesso!")
