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/Comparativo_Saveiros_Bahia.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("ESTUDO COMPARATIVO DE EMBARCAÇÕES TRADICIONAIS DA BAHIA", title_style))
story.append(Paragraph("<b>Saveiro de Pesca (6,30 m) vs. Saveiro de Carga do Recôncavo (10,50 m)</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. Os Dois Grandes Tipos de Saveiros da Bahia", section_heading))
story.append(Paragraph(
    "Na tradição naval da Baía de Todos-os-Santos e do Rio Paraguaçu, existiam essencialmente duas categorias de saveiros:<br/>"
    "• <b>Saveiro Pequeno de Pesca / Raspa (6,00 a 7,00 m):</b> Casco leve, ágil, armado com <i>uma vela de pena</i> (latina pura). Projetado para pescar no banco dos caranhas e baixios, entrar em mangues e voltar rápido para a feira.<br/>"
    "• <b>Saveiro de Carga / Sombreiro (10,00 a 14,00 m):</b> O grande 'caminhão' das águas baianas. Fundo muito bojudo, casco largo e fundo, armado com <i>vela de içar de grande pano</i> e pequeno tijupá de popa para transportar toneladas de cerâmica de Maragojipe, fumo, farinha e lenha.",
    body_style
))

# Tabela
t_data = [
    [Paragraph("Característica / Parâmetro", table_header_style), Paragraph("Saveiro de Pesca (6,30 m)<br/>[Seu Projeto]", table_header_style), Paragraph("Saveiro de Carga (10,50 m)<br/>[Modelo de Comparação]", table_header_style), Paragraph("Impacto Prático e Funcional", table_header_style)],
    [Paragraph("Comprimento Total (LOA)", table_body_bold), Paragraph("6,30 m (20,7 ft)", table_body_style), Paragraph("10,50 m (34,4 ft)", table_body_style), Paragraph("O 6,30 m é manobrado por 1 a 2 homens; o 10,50 m exige 3 a 4 mestres.", table_body_style)],
    [Paragraph("Boca Máxima (Largura)", table_body_bold), Paragraph("2,40 m a 2,50 m", table_body_style), Paragraph("3,60 m a 3,80 m", table_body_style), Paragraph("O de carga é proporcionalmente muito mais largo para dar estabilidade de peso.", table_body_style)],
    [Paragraph("Pontal / Calado", table_body_bold), Paragraph("Pontal: 0,85 m | Calado: 0,45 m", table_body_style), Paragraph("Pontal: 1,40 m | Calado: 0,85 m", table_body_style), Paragraph("O 6,30 m encalha e sai na maré rasa; o 10,50 m precisa de calado em canal.", table_body_style)],
    [Paragraph("Deslocamento Total (Peso)", table_body_bold), Paragraph("~1,8 a 2,2 toneladas", table_body_style), Paragraph("~7,5 a 9,0 toneladas", table_body_style), Paragraph("Diferença brutal de massa e esforço de governo.", table_body_style)],
    [Paragraph("Capacidade Útil de Carga", table_body_bold), Paragraph("600 a 800 kg de peixe + gelo", table_body_style), Paragraph("6,0 a 8,0 toneladas de carga", table_body_style), Paragraph("Pesca artesanal ágil vs. transporte pesado de mercadorias.", table_body_style)],
    [Paragraph("Área Vélica (Pena / Içar)", table_body_bold), Paragraph("~21,5 m² (Pena: 7,80 m)", table_body_style), Paragraph("~54,0 m² (Pena: 11,5 m)", table_body_style), Paragraph("A vela do de carga exige moitões duplos e cabo grosso para caçar.", table_body_style)],
    [Paragraph("Motor Diesel de Centro", table_body_bold), Paragraph("<b>10 a 14 CV</b> (ex: Yanmar B10)", table_body_style), Paragraph("<b>36 a 45 CV</b> (ex: MWM 3 cil / Yanmar)", table_body_style), Paragraph("Ambos andam em cruzeiro de 5,5 a 6,5 nós com motores de baixa rotação.", table_body_style)],
    [Paragraph("Consumo de Diesel", table_body_bold), Paragraph("<b>~1,2 a 1,5 L/h</b>", table_body_style), Paragraph("<b>~3,5 a 4,5 L/h</b>", table_body_style), Paragraph("O 6,30 m gasta quase nada para operar o dia todo.", table_body_style)]
]

t_table = Table(t_data, colWidths=[1.6*inch, 1.8*inch, 1.8*inch, 2.0*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.5),
    ('BOTTOMPADDING', (0,0), (-1,-1), 2.5),
]))
story.append(t_table)
story.append(Spacer(1, 4))

story.append(Paragraph("2. Conclusão da Comparação", section_heading))
story.append(Paragraph(
    "O seu <b>Saveiro de 6,30 m</b> é a embarcação perfeita para pesca e velejada esportiva/costeira: leve, não exige guincho pesado de âncora, pode ser varado em qualquer praia com a maré baixa e anda perfeitamente com um motorzinho econômico de 12 CV. "
    "O <b>Saveiro de 10,50 m</b> é um cargueiro de grande porte, pensado para viver dias a bordo no tijupá transportando peso bruto.",
    body_style
))

doc.build(story)
print("PDF Comparativo Saveiros gerado com sucesso!")
