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/Dossie_Tecnico_Saveiro_E_da_Vida.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=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.6,
    leading=10.2,
    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,
    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_bold = ParagraphStyle(
    'TableBodyBold',
    parent=styles['Normal'],
    fontName='Helvetica-Bold',
    fontSize=6.8,
    leading=8.5,
    textColor=primary_color,
    alignment=1
)

story = []

# Cabeçalho
story.append(Paragraph("DOSSIÊ TÉCNICO E HISTÓRICO: SAVEIRO TRADICIONAL 'É DA VIDA'", title_style))
story.append(Paragraph("<b>Levantamento Cadastral de Linhas e Fotogrametria Naval (Recôncavo Baiano)</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 Cadastral e Registro Oficial", section_heading))
story.append(Paragraph(
    "A prancha documental analisa o saveiro tradicional <b>'É DA VIDA'</b>, cadastrado pela Capitania dos Portos da Bahia sob a <b>Inscrição Nº 2810255469</b>. "
    "Originário dos estaleiros artesanais do Rio Jaguaripe / Maragogipinho, a embarcação é um dos mais representativos exemplares de saveiros de trabalho e tráfego da Baía de Todos-os-Santos. "
    "A prancha técnica combina fotografias ortorretificadas (vistas ortogonais reais) com o plano de linhas teórico original de seu casco.",
    body_style
))

# 2. Tabela de Dimensões
story.append(Paragraph("2. Especificações Técnicas e Dimensões Principais (Escala Gráfica 1000 cm)", section_heading))

table_data = [
    [
        Paragraph("Parâmetro Naval", table_header_style),
        Paragraph("Dimensão Aferida (Métrica)", table_header_style),
        Paragraph("Dimensão em Centímetros", table_header_style),
        Paragraph("Descrição Técnica e Comportamento Náutico", table_header_style)
    ],
    [
        Paragraph("Comprimento Total (LOA)", table_body_bold),
        Paragraph("<b>8,40 metros</b> (27,6 pés)", table_body_style),
        Paragraph("840 cm", table_body_style),
        Paragraph("Comprimento da roda de proa saliente até a face posterior do painel de popa.", table_body_left)
    ],
    [
        Paragraph("Comprimento Linha d'Água (LWL)", table_body_bold),
        Paragraph("<b>7,65 metros</b>", table_body_style),
        Paragraph("765 cm", table_body_style),
        Paragraph("Linha d'água longa que garante velocidade de deslocamento de casco em cruzeiro de ~6,5 a 7,0 nós.", table_body_left)
    ],
    [
        Paragraph("Boca Máxima Moldada (B)", table_body_bold),
        Paragraph("<b>2,75 metros</b> (9,0 pés)", table_body_style),
        Paragraph("275 cm", table_body_style),
        Paragraph("Relação L/B = 3,05. Proporção clássica que confere excelente momento restaurador de estabilidade estática.", table_body_left)
    ],
    [
        Paragraph("Pontal Moldado na Meia-Nau (D)", table_body_bold),
        Paragraph("<b>1,35 metro</b>", table_body_style),
        Paragraph("135 cm", table_body_style),
        Paragraph("Altura da quilha até a borda na seção mestra. Francobordo médio de ~0,75 m, seguro contra marola da baía.", table_body_left)
    ],
    [
        Paragraph("Calado de Operação (T)", table_body_bold),
        Paragraph("<b>0,55 m a 0,60 m</b>", table_body_style),
        Paragraph("55 cm a 60 cm", table_body_style),
        Paragraph("Calado moderado com fundo chato e quilhão central. Permite atracar e encalhar reto na areia na maré vazante.", table_body_left)
    ],
    [
        Paragraph("Deslocamento Carregado Estimado", table_body_bold),
        Paragraph("<b>~3.800 a 4.200 kg</b>", table_body_style),
        Paragraph("~4,0 toneladas", table_body_style),
        Paragraph("Peso estrutural de madeira de lei maciça + lastro de pedra/ferro + carga e tripulação.", table_body_left)
    ],
    [
        Paragraph("Casaria / Tijupá (Dimensões)", table_body_bold),
        Paragraph("Comprimento: 4,00 m | Boca: 1,90 m", table_body_style),
        Paragraph("400 cm × 190 cm", table_body_style),
        Paragraph("Abrigo tradicional de madeira para proteção da carga seca e pernoite dos mestres.", table_body_left)
    ],
    [
        Paragraph("Padrão de Pintura Tradicional", table_body_bold),
        Paragraph("Policromia Baiana", table_body_style),
        Paragraph("Padrão Identificado", table_body_style),
        Paragraph("Costado azul-marinho com frisos horizontais amarelo, vermelho e azul-celeste; obra-viva preta/anti-incrustante.", table_body_left)
    ]
]

t_comp = Table(
    table_data,
    colWidths=[2.0*inch, 2.0*inch, 1.8*inch, 4.4*inch]
)

t_comp.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.5),
    ('BOTTOMPADDING', (0,0), (-1,-1), 2.5),
]))
story.append(t_comp)
story.append(Spacer(1, 4))

# 3. Análise dos Desenhos da Prancha
story.append(Paragraph("3. Análise Crítica dos Desenhos Navais e Vistas da Prancha", section_heading))
story.append(Paragraph(
    "• <b>Vista Boreste e Vista Superior (Ortofotografias):</b> Revelam a estrutura real do saveiro. A casaria tem teto ripado azul-celeste com o letreiro 'É DA VIDA' em letras vermelhas sobre fundo branco. Na proa, vê-se a carlinga e o toco do mastro na cor verde com detalhes amarelos.<br/>"
    "• <b>Plano de Perfil (rotulado como 'Plano de Linha d`Água'):</b> Mostra o contorno da roda de proa curva com o bico típico de saveiro e o espelho de popa com o leme externo em madeira pesada.<br/>"
    "• <b>Plano de Linhas d'Água (rotulado como 'Plano de Linha do Alto'):</b> As curvas horizontais mostram uma entrada de água afilada na proa que se abre em um bojo largo a meia-nau, mantendo boa largura até o espelho de popa para evitar que o barco abaixe a popa quando carregado.<br/>"
    "• <b>Plano de Balizas (Seções Transversais de Proa e Popa):</b> Confirma o fundo em 'V' suave com transição para fundo quase chato na quilha e bojo arredondado contínuo, a fórmula clássica dos mestres baianos para estabilidade de lastro e facilidade de encalhe em praias de maré.",
    body_style
))

doc.build(story)
print("PDF Dossie E da Vida gerado com sucesso!")
