import os
from reportlab.lib.pagesizes import letter, landscape
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_Similar_Perfil_Pop25.pdf"

doc = SimpleDocTemplate(
    pdf_path,
    pagesize=landscape(letter),
    rightMargin=30,
    leftMargin=30,
    topMargin=26,
    bottomMargin=26
)

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=13,
    leading=17,
    textColor=primary_color,
    alignment=1,
    spaceAfter=2
)

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

section_heading = ParagraphStyle(
    'SectionHeading',
    parent=styles['Heading2'],
    fontName='Helvetica-Bold',
    fontSize=9.5,
    leading=12,
    textColor=primary_color,
    spaceBefore=4,
    spaceAfter=2
)

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

bullet_style = ParagraphStyle(
    'BulletDark',
    parent=body_style,
    leftIndent=8,
    firstLineIndent=-6,
    spaceAfter=1.5
)

table_header_style = ParagraphStyle(
    'TableHeader',
    parent=styles['Normal'],
    fontName='Helvetica-Bold',
    fontSize=6.8,
    leading=8.5,
    textColor=colors.white,
    alignment=1
)

table_body_style = ParagraphStyle(
    'TableBody',
    parent=styles['Normal'],
    fontName='Helvetica',
    fontSize=6.5,
    leading=8.2,
    textColor=dark_neutral,
    alignment=1
)

table_body_left = ParagraphStyle(
    'TableBodyLeft',
    parent=table_body_style,
    alignment=0
)

table_body_bold = ParagraphStyle(
    'TableBodyBold',
    parent=styles['Normal'],
    fontName='Helvetica-Bold',
    fontSize=6.5,
    leading=8.2,
    textColor=primary_color,
    alignment=1
)

story = []

# Cabeçalho
story.append(Paragraph("DOSSIÊ TÉCNICO DE PERFIL E SIMILARIDADE: VELEIRO POP 25 (B&G YACHT DESIGN)", title_style))
story.append(Paragraph("<b>Projeto Clássico de Roberto Barros (Cabinho) — Casco Amarelo, Hard Chine e Alta Habitabilidade</b> | Aluno: Alberico | Brana / EEE", subtitle_style))
story.append(HRFlowable(width="100%", thickness=1.2, color=secondary_color, spaceAfter=4))

# 1. Identificação
story.append(Paragraph("1. Identificação do Barco da Imagem de Referência", section_heading))
story.append(Paragraph(
    "O veleiro de casco amarelo com faixa cinza escura na imagem enviada pelo aluno é o consagrado <b>POP 25</b>, "
    "projetado pelo renomado escritório <b>B&G Yacht Design (Roberto Barros / Cabinho)</b>. "
    "Trata-se de um veleiro de 25 pés (7,54 m) concebido para cruzeiro oceânico e costeiro seguro, projetado para construção amadora em compensado naval e epóxi (*plywood-epoxy*). "
    "Suas marcas registradas são o <b>casco chineado com costado quase vertical (*hard chine*)</b>, <b>popa bem larga em formato quase triangular</b>, "
    "<b>leme externo pendurado no espelho de popa (*transom-hung rudder*)</b>, armação sloop fracionada sem estai de popa (*backstayless*) e casaria de perfil baixo integrada (*semi-flush deck*) com ampla janela azul panorâmica.",
    body_style
))

# 2. Tabela de Especificações
t_specs = [
    [
        Paragraph("Parâmetro de Projeto", table_header_style),
        Paragraph("Medida Métrica", table_header_style),
        Paragraph("Medida Imperial", table_header_style),
        Paragraph("Justificativa Técnica e Comportamento Náutico", table_header_style)
    ],
    [
        Paragraph("Comprimento Total (LOA)", table_body_bold),
        Paragraph("<b>7,54 metros</b>", table_body_style),
        Paragraph("24' 8\"", table_body_style),
        Paragraph("Porte compacto e ágil de 25 pés, fácil de manobrar em solitário ou em casal.", table_body_left)
    ],
    [
        Paragraph("Comprimento Linha d'Água (LWL)", table_body_bold),
        Paragraph("<b>7,25 metros</b>", table_body_style),
        Paragraph("23' 10\"", table_body_style),
        Paragraph("Linha d'água longa (96% do LOA) com proa quase vertical, maximizando a velocidade de casco (~6,5 nós).", table_body_left)
    ],
    [
        Paragraph("Boca Máxima Moldada (B)", table_body_bold),
        Paragraph("<b>2,80 metros</b>", table_body_style),
        Paragraph("9' 2\"", table_body_style),
        Paragraph("Popa muito larga (2,40 m), criando estabilidade estática e dinâmica de forma excepcional.", table_body_left)
    ],
    [
        Paragraph("Calado de Projeto (T)", table_body_bold),
        Paragraph("<b>1,10 metro</b>", table_body_style),
        Paragraph("3' 7\"", table_body_style),
        Paragraph("Calado moderado que permite fundear próximo à praia e entrar em rios rasos; versão com quilha e bulbo.", table_body_left)
    ],
    [
        Paragraph("Deslocamento Leve / Lastro", table_body_bold),
        Paragraph("<b>2.800 kg / 560 kg</b>", table_body_style),
        Paragraph("6.170 lbs / 1.230 lbs", table_body_style),
        Paragraph("Lastro de bulbo (razão 20%) reforçado pelo peso das baterias/tanques posicionados no fundo.", table_body_left)
    ],
    [
        Paragraph("Pé-Direito Interno (Headroom)", table_body_bold),
        Paragraph("<b>1,80 metro</b>", table_body_style),
        Paragraph("5' 11\"", table_body_style),
        Paragraph("Impressionante pé-direito para um 25 pés, obtido pela borda livre alta sem precisar de casaria 'bolha'.", table_body_left)
    ],
    [
        Paragraph("Área Vélica Total (Sloop)", table_body_bold),
        Paragraph("<b>44,0 m²</b>", table_body_style),
        Paragraph("293 sq ft", table_body_style),
        Paragraph("Grande vela mestra com topo quadrado (*square-top*) e buja 100%, sem estai de popa para manobra limpa.", table_body_left)
    ],
    [
        Paragraph("Propulsão Auxiliar", table_body_bold),
        Paragraph("Motor Elétrico 4,5 kW ou Diesel 10–14 CV", table_body_style),
        Paragraph("Elétrico / Diesel", table_body_style),
        Paragraph("Projetado prioritariamente para propulsão elétrica sustentável com baterias sob o salão.", table_body_left)
    ],
    [
        Paragraph("Tanques e Habitabilidade", table_body_bold),
        Paragraph("260 L água doce | 2 camarotes", table_body_style),
        Paragraph("68 galões", table_body_style),
        Paragraph("Camarote de proa em V + 2 amplos quarter berths na popa (pernoite confortável para até 5 pessoas).", table_body_left)
    ]
]

t_table_specs = Table(t_specs, colWidths=[1.8*inch, 1.8*inch, 1.3*inch, 5.3*inch])
t_table_specs.setStyle(TableStyle([
    ('BACKGROUND', (0,0), (-1,0), primary_color),
    ('ALIGN', (0,0), (-1,-1), 'CENTER'),
    ('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_specs)
story.append(Spacer(1, 4))

# 3. Análise da Planta e Conexão
story.append(Paragraph("2. Comparação do Perfil com as Plantas Interiores Anteriores", section_heading))
story.append(Paragraph(
    "• <b>Conexão Direta com a Planta Baixa enviada:</b> A planta baixa colorida que você enviou anteriormente casa perfeitamente com a distribuição interna deste <b>Pop 25</b>! "
    "A popa larga com os dois <i>quarter berths</i> azuis (1,90 m × 1,08 m), o banheiro transversal rosa antes da proa em V verde e a cozinha linear cinza são a marca registrada da arquitetura de Cabinho.<br/>"
    "• <b>Facilidade Construtiva (Plywood-Epoxy):</b> Por ser desenhado com quinas vivas (*hard chine*), as chapas de compensado naval de 10 mm a 12 mm assentam naturalmente sobre as cavernas sem precisar de conformação a vapor, sendo o método ideal para construção amadora no estaleiro escola.",
    body_style
))

doc.build(story)
print("PDF Similar Pop 25 gerado com sucesso!")
