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/Estudo_Ampliado_Similares_Lobster_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("#B45309")
accent_highlight = colors.HexColor("#1E3A8A")
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,
    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=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.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_main = ParagraphStyle(
    'TableBodyMain',
    parent=styles['Normal'],
    fontName='Helvetica-Bold',
    fontSize=7.2,
    leading=9.2,
    textColor=colors.HexColor("#0F2B48")
)

story = []

# Cabeçalho
story.append(Paragraph("ESTUDO COMPARATIVO AMPLIADO DE EMBARCAÇÕES SIMILARES", title_style))
story.append(Paragraph("<b>Projeto de Referência: Lobster Boat Alberico 8,50 m (Monocasco)</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. Metodologia: O Projeto Alberico como Modelo Central de Comparação", section_heading))
story.append(Paragraph(
    "O <b>Projeto Alberico (Lobster 8,50 m)</b> é o modelo central a ser validado. Comparamos suas características com outros 6 projetos de renome internacional na faixa de 26 a 29 pés (EUA e Reino Unido/Europa), cobrindo barcos tradicionais de pesca de fundo, covos de lagosta e trabalho costeiro pesado.",
    body_style
))

# Tabela
sim_data = [
    [Paragraph("Embarcação", table_header_style), Paragraph("LOA", table_header_style), Paragraph("Boca (B)", table_header_style), Paragraph("Calado (T)", table_header_style), Paragraph("Relação L/B", table_header_style), Paragraph("Motorização", table_header_style), Paragraph("Foco de Missão", table_header_style)],
    # Modelo Principal
    [Paragraph("★ PROJETO ALBERICO (BR)", table_body_main), Paragraph("8,50 m", table_body_main), Paragraph("2,90 m", table_body_main), Paragraph("0,75 m", table_body_main), Paragraph("2,93", table_body_main), Paragraph("Diesel 30 CV", table_body_main), Paragraph("Pesca Talude (1t peixe / 5 dias)", table_body_main)],
    # Similares Internacionais
    [Paragraph("Crowley Beal 28 (EUA)", table_body_style), Paragraph("8,66 m", table_body_style), Paragraph("2,87 m", table_body_style), Paragraph("0,85 m", table_body_style), Paragraph("3,01", table_body_style), Paragraph("Diesel 130–220 HP", table_body_style), Paragraph("Pesca comercial de lagosta/espinhel", table_body_style)],
    [Paragraph("Ellis 28 (EUA)", table_body_style), Paragraph("8,64 m", table_body_style), Paragraph("2,84 m", table_body_style), Paragraph("0,91 m", table_body_style), Paragraph("3,04", table_body_style), Paragraph("Diesel 170–220 HP", table_body_style), Paragraph("Cruzeiro Downeast / Pesca esportiva", table_body_style)],
    [Paragraph("Northern Bay 28 (EUA)", table_body_style), Paragraph("8,53 m", table_body_style), Paragraph("3,10 m", table_body_style), Paragraph("0,86 m", table_body_style), Paragraph("2,75", table_body_style), Paragraph("Diesel 200–300 HP", table_body_style), Paragraph("Pesca pesada e apoio costeiro", table_body_style)],
    [Paragraph("Cygnus GM26 (Reino Unido)", table_body_style), Paragraph("8,13 m", table_body_style), Paragraph("2,95 m", table_body_style), Paragraph("1,00 m", table_body_style), Paragraph("2,75", table_body_style), Paragraph("Diesel 60–110 HP", table_body_style), Paragraph("Pesca de covos e espinhel no Mar do Norte", table_body_style)],
    [Paragraph("Duffy 26 (EUA)", table_body_style), Paragraph("7,92 m", table_body_style), Paragraph("2,90 m", table_body_style), Paragraph("0,76 m", table_body_style), Paragraph("2,73", table_body_style), Paragraph("Diesel 80–150 HP", table_body_style), Paragraph("Trabalho costeiro e pesca tradicional", table_body_style)],
    [Paragraph("Mitchell 31 (Reino Unido)", table_body_style), Paragraph("9,45 m", table_body_style), Paragraph("3,20 m", table_body_style), Paragraph("0,90 m", table_body_style), Paragraph("2,95", table_body_style), Paragraph("Diesel 120–225 HP", table_body_style), Paragraph("Pesca de mar grosso e patrulha", table_body_style)]
]

t_sim = Table(sim_data, colWidths=[1.6*inch, 0.7*inch, 0.8*inch, 0.8*inch, 0.8*inch, 1.2*inch, 1.7*inch])
t_sim.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), 'LEFT'),
    ('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_sim)
story.append(Spacer(1, 4))

# 3. Análise Comparativa Detalhada
story.append(Paragraph("2. Comparação Técnica: O Projeto Alberico em Relação aos Similares", section_heading))
story.append(Paragraph("• <b>Proporção de Boca (2,90 m):</b> O Projeto Alberico tem boca praticamente idêntica ao <b>Crowley Beal 28 (2,87 m)</b>, <b>Ellis 28 (2,84 m)</b>, <b>Duffy 26 (2,90 m)</b> e <b>Cygnus GM26 (2,95 m)</b>. A relação L/B de <b>2,93</b> fica exatamente no centro da faixa ideal (2,73 a 3,04), garantindo firmeza lateral perfeita para recolher carga pelo bordo sem perder hidrodinâmica.", bullet_style))
story.append(Paragraph("• <b>Calado Otimizado (0,75 m):</b> Enquanto modelos europeus de mar do norte (Cygnus e Mitchell) usam calados de 0,90 a 1,00 m devido ao mar extremamente revolto com lastro de chumbo pesado, o calado de 0,75 m do Projeto Alberico é ideal para a costa brasileira: protege hélice e leme pelo skeg, sem impedir a entrada em canais e atracadouros da Bahia.", bullet_style))
story.append(Paragraph("• <b>Consumo e Eficiência Energética (Diesel 30 CV):</b> Enquanto os similares americanos usam motores grandes (150 a 250 HP) para atingir velocidades de semi-planeio de 16 a 20 nós com alto consumo de combustível (25 a 40 L/h), o Projeto Alberico foca na <b>máxima rentabilidade da pescaria</b>: opera em regime de deslocamento eficiente a <b>6,8 nós</b> gastando apenas <b>~3 L/h de diesel</b>.", bullet_style))
story.append(Paragraph("• <b>Capacidade Útil de Carga:</b> O volume de porão térmico de <b>3,5 m³ (1.000 kg peixe + 1.100 kg gelo)</b> do Projeto Alberico é comparável aos porões do Cygnus GM26 e Crowley Beal 28, com a vantagem do isolamento moderno em poliuretano (PUR 80 mm) que preserva o gelo por 5 dias em clima tropical.", bullet_style))

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