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

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

# Usar modo paisagem para caber a tabela técnica com todas as colunas perfeitamente
doc = SimpleDocTemplate(
    pdf_path,
    pagesize=landscape(letter),
    rightMargin=30,
    leftMargin=30,
    topMargin=28,
    bottomMargin=28
)

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=2
)

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=9.5,
    leading=12,
    textColor=primary_color,
    spaceBefore=4,
    spaceAfter=2
)

body_style = ParagraphStyle(
    'BodyDark',
    parent=styles['Normal'],
    fontName='Helvetica',
    fontSize=7.8,
    leading=10.5,
    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=7,
    leading=8.5,
    textColor=colors.white,
    alignment=1
)

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

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

table_body_main = ParagraphStyle(
    'TableBodyMain',
    parent=styles['Normal'],
    fontName='Helvetica-Bold',
    fontSize=6.8,
    leading=8.5,
    textColor=colors.HexColor("#0F2B48"),
    alignment=1
)

table_body_main_left = ParagraphStyle(
    'TableBodyMainLeft',
    parent=table_body_main,
    alignment=0
)

story = []

# Cabeçalho
story.append(Paragraph("ESTUDO COMPARATIVO AMPLIADO DE EMBARCAÇÕES SIMILARES — ÍNDICES E PROPULSÃO", title_style))
story.append(Paragraph("<b>Modelo Principal de Referência: Projeto Alberico (Lobster Boat 8,50 m)</b> | Aluno: Alberico de Carvalho Santiago | Brana / EEE", subtitle_style))
story.append(HRFlowable(width="100%", thickness=1.2, color=secondary_color, spaceAfter=4))

# Tabela Completa em Paisagem com todas as colunas solicitadas
table_data = [
    [
        Paragraph("Embarcação / Modelo", table_header_style),
        Paragraph("LOA<br/>(m / ft)", table_header_style),
        Paragraph("LWL<br/>(m / ft)", table_header_style),
        Paragraph("Boca (B)<br/>(m / ft)", table_header_style),
        Paragraph("Calado (T)<br/>(m / ft)", table_header_style),
        Paragraph("Desloc. (Δ)<br/>(ton / lbs)", table_header_style),
        Paragraph("Motorização<br/>Instalada", table_header_style),
        Paragraph("Velocidade<br/>Cruzeiro", table_header_style),
        Paragraph("Velocidade<br/>Máxima", table_header_style),
        Paragraph("Razão Desloc. /<br/>Comprimento (DLR)", table_header_style),
        Paragraph("Razão Desloc. /<br/>Potência (kg/HP)", table_header_style),
        Paragraph("Regime de<br/>Navegação", table_header_style)
    ],
    # MODELO PRINCIPAL (PROJETO ALBERICO)
    [
        Paragraph("★ PROJETO ALBERICO (BR)", table_body_main_left),
        Paragraph("8,50 m<br/>(27,9 ft)", table_body_main),
        Paragraph("7,80 m<br/>(25,6 ft)", table_body_main),
        Paragraph("2,90 m<br/>(9,5 ft)", table_body_main),
        Paragraph("0,75 m<br/>(2,5 ft)", table_body_main),
        Paragraph("5,0 ton<br/>(11.020 lbs)", table_body_main),
        Paragraph("Diesel 30 CV<br/>(Centro)", table_body_main),
        Paragraph("6,8 nós<br/>(~3,0 L/h)", table_body_main),
        Paragraph("7,5 nós", table_body_main),
        Paragraph("293<br/>(Pesado/Trabalho)", table_body_main),
        Paragraph("166,7 kg/HP<br/>(Econômico)", table_body_main),
        Paragraph("Deslocamento<br/>Puro Eficiente", table_body_main)
    ],
    # SIMILAR 1: Crowley Beal 28
    [
        Paragraph("Crowley Beal 28 (EUA)", table_body_left),
        Paragraph("8,66 m<br/>(28,5 ft)", table_body_style),
        Paragraph("8,00 m<br/>(26,2 ft)", table_body_style),
        Paragraph("2,87 m<br/>(9,4 ft)", table_body_style),
        Paragraph("0,85 m<br/>(2,8 ft)", table_body_style),
        Paragraph("5,2 ton<br/>(11.460 lbs)", table_body_style),
        Paragraph("Diesel 220 HP<br/>(Centro)", table_body_style),
        Paragraph("14,0 nós<br/>(~24 L/h)", table_body_style),
        Paragraph("18,5 nós", table_body_style),
        Paragraph("284<br/>(Pesado/Trabalho)", table_body_style),
        Paragraph("23,6 kg/HP<br/>(Rápido)", table_body_style),
        Paragraph("Semi-deslocamento<br/>Rápido", table_body_style)
    ],
    # SIMILAR 2: Ellis 28
    [
        Paragraph("Ellis 28 (EUA)", table_body_left),
        Paragraph("8,64 m<br/>(28,4 ft)", table_body_style),
        Paragraph("7,92 m<br/>(26,0 ft)", table_body_style),
        Paragraph("2,84 m<br/>(9,4 ft)", table_body_style),
        Paragraph("0,91 m<br/>(3,0 ft)", table_body_style),
        Paragraph("4,4 ton<br/>(9.700 lbs)", table_body_style),
        Paragraph("Diesel 170 HP<br/>(Centro)", table_body_style),
        Paragraph("13,5 nós<br/>(~20 L/h)", table_body_style),
        Paragraph("17,0 nós", table_body_style),
        Paragraph("247<br/>(Médio/Pesado)", table_body_style),
        Paragraph("25,9 kg/HP<br/>(Rápido)", table_body_style),
        Paragraph("Semi-deslocamento<br/>Cruzeiro", table_body_style)
    ],
    # SIMILAR 3: Northern Bay 28
    [
        Paragraph("Northern Bay 28 (EUA)", table_body_left),
        Paragraph("8,53 m<br/>(28,0 ft)", table_body_style),
        Paragraph("7,85 m<br/>(25,7 ft)", table_body_style),
        Paragraph("3,10 m<br/>(10,2 ft)", table_body_style),
        Paragraph("0,86 m<br/>(2,8 ft)", table_body_style),
        Paragraph("5,5 ton<br/>(12.120 lbs)", table_body_style),
        Paragraph("Diesel 260 HP<br/>(Centro)", table_body_style),
        Paragraph("16,0 nós<br/>(~32 L/h)", table_body_style),
        Paragraph("22,0 nós", table_body_style),
        Paragraph("317<br/>(Muito Pesado)", table_body_style),
        Paragraph("21,1 kg/HP<br/>(Alta pot.)", table_body_style),
        Paragraph("Semi-planeio<br/>Comercial", table_body_style)
    ],
    # SIMILAR 4: Duffy 26
    [
        Paragraph("Duffy 26 (EUA)", table_body_left),
        Paragraph("7,92 m<br/>(26,0 ft)", table_body_style),
        Paragraph("7,31 m<br/>(24,0 ft)", table_body_style),
        Paragraph("2,90 m<br/>(9,5 ft)", table_body_style),
        Paragraph("0,76 m<br/>(2,5 ft)", table_body_style),
        Paragraph("3,8 ton<br/>(8.380 lbs)", table_body_style),
        Paragraph("Diesel 100 HP<br/>(Centro)", table_body_style),
        Paragraph("11,0 nós<br/>(~12 L/h)", table_body_style),
        Paragraph("14,5 nós", table_body_style),
        Paragraph("271<br/>(Pesado/Trabalho)", table_body_style),
        Paragraph("38,0 kg/HP<br/>(Moderado)", table_body_style),
        Paragraph("Semi-deslocamento<br/>Clássico", table_body_style)
    ],
    # SIMILAR 5: Cygnus GM26
    [
        Paragraph("Cygnus GM26 (Reino Unido)", table_body_left),
        Paragraph("8,13 m<br/>(26,7 ft)", table_body_style),
        Paragraph("7,40 m<br/>(24,3 ft)", table_body_style),
        Paragraph("2,95 m<br/>(9,7 ft)", table_body_style),
        Paragraph("1,00 m<br/>(3,3 ft)", table_body_style),
        Paragraph("5,0 ton<br/>(11.020 lbs)", table_body_style),
        Paragraph("Diesel 75 HP<br/>(Centro)", table_body_style),
        Paragraph("7,5 nós<br/>(~7,0 L/h)", table_body_style),
        Paragraph("8,8 nós", table_body_style),
        Paragraph("344<br/>(Muito Pesado)", table_body_style),
        Paragraph("66,7 kg/HP<br/>(Trabalho)", table_body_style),
        Paragraph("Deslocamento /<br/>Trabalho Pesado", table_body_style)
    ],
    # SIMILAR 6: Sisu 26
    [
        Paragraph("Sisu 26 (EUA)", table_body_left),
        Paragraph("7,92 m<br/>(26,0 ft)", table_body_style),
        Paragraph("7,30 m<br/>(24,0 ft)", table_body_style),
        Paragraph("2,95 m<br/>(9,7 ft)", table_body_style),
        Paragraph("0,71 m<br/>(2,3 ft)", table_body_style),
        Paragraph("3,5 ton<br/>(7.710 lbs)", table_body_style),
        Paragraph("Diesel 75 HP<br/>(Centro)", table_body_style),
        Paragraph("9,5 nós<br/>(~8,0 L/h)", table_body_style),
        Paragraph("12,0 nós", table_body_style),
        Paragraph("252<br/>(Médio/Pesado)", table_body_style),
        Paragraph("46,7 kg/HP<br/>(Moderado)", table_body_style),
        Paragraph("Semi-deslocamento<br/>Econômico", table_body_style)
    ]
]

t_comp = Table(
    table_data,
    colWidths=[1.45*inch, 0.7*inch, 0.7*inch, 0.75*inch, 0.7*inch, 0.85*inch, 0.95*inch, 0.85*inch, 0.75*inch, 1.05*inch, 0.95*inch, 1.0*inch]
)

t_comp.setStyle(TableStyle([
    ('BACKGROUND', (0,0), (-1,0), primary_color),
    ('BACKGROUND', (0,1), (-1,1), colors.HexColor("#FEF3C7")), # Destaque amarelo suave para o Projeto Alberico
    ('ALIGN', (0,0), (-1,-1), 'CENTER'),
    ('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
    ('GRID', (0,0), (-1,-1), 0.5, border_color),
    ('ROWBACKGROUNDS', (0,2), (-1,-1), [light_neutral, colors.white]),
    ('TOPPADDING', (0,0), (-1,-1), 2),
    ('BOTTOMPADDING', (0,0), (-1,-1), 2),
]))
story.append(t_comp)
story.append(Spacer(1, 4))

# Análise Técnica dos Índices
story.append(Paragraph("ANÁLISE CRÍTICA DOS COEFICIENTES NÁUTICOS (PROJETO ALBERICO VS. SIMILARES)", section_heading))

analysis_text = (
    "• <b>Razão Deslocamento / Comprimento (DLR = 293):</b> O índice DLR do Projeto Alberico situa-se na faixa de <b>250 a 300 (embarcações de trabalho pesado e pesca oceânica)</b>, praticamente idêntico ao do <i>Crowley Beal 28 (DLR = 284)</i> e <i>Duffy 26 (DLR = 271)</i>. Isso comprova que o casco possui volume e flutuabilidade perfeitamente calibrados para carregar 1 tonelada de peixe + 1,1t de gelo sem afundar a borda livre de segurança.<br/>"
    "• <b>Razão Deslocamento / Potência (166,7 kg/HP):</b> Enquanto os modelos americanos comerciais utilizam relações de 20 a 38 kg/HP para operar em semi-planeio rápido (queimando de 20 a 35 L/h de diesel), o Projeto Alberico opera na faixa de <b>alta eficiência energética de deslocamento (>100 kg/HP)</b>. Isso garante que cada cavalo de potência empurre o barco de forma útil a 6,8 nós, consumindo apenas <b>~3,0 L/h</b>.<br/>"
    "• <b>Velocidade de Cruzeiro (6,8 nós) vs. Consumo:</b> Para uma pescaria de 5 dias no talude, a economia é gigantesca: uma viagem completa de 5 dias no Projeto Alberico consome cerca de <b>120 a 150 litros de diesel</b>, contra mais de <b>500 a 800 litros</b> dos similares com motores de 170 a 260 HP, viabilizando o lucro líquido do pescador."
)
story.append(Paragraph(analysis_text, body_style))

doc.build(story)
print("PDF Similares Completo gerado com sucesso!")
