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

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

doc = SimpleDocTemplate(
    pdf_path,
    pagesize=letter,
    rightMargin=36,
    leftMargin=36,
    topMargin=36,
    bottomMargin=36
)

styles = getSampleStyleSheet()

primary_color = colors.HexColor("#0F172A")
secondary_color = colors.HexColor("#DC2626")
dark_neutral = colors.HexColor("#334155")
light_neutral = colors.HexColor("#F8FAFC")
border_color = colors.HexColor("#CBD5E1")

title_style = ParagraphStyle(
    'DocTitle',
    parent=styles['Heading1'],
    fontName='Helvetica-Bold',
    fontSize=16,
    leading=20,
    textColor=primary_color,
    alignment=1,
    spaceAfter=3
)

subtitle_style = ParagraphStyle(
    'DocSubtitle',
    parent=styles['Normal'],
    fontName='Helvetica',
    fontSize=9.5,
    leading=13,
    textColor=secondary_color,
    alignment=1,
    spaceAfter=8
)

section_heading = ParagraphStyle(
    'SectionHeading',
    parent=styles['Heading2'],
    fontName='Helvetica-Bold',
    fontSize=10.5,
    leading=13,
    textColor=primary_color,
    spaceBefore=6,
    spaceAfter=3
)

body_style = ParagraphStyle(
    'BodyDark',
    parent=styles['Normal'],
    fontName='Helvetica',
    fontSize=8.2,
    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.8,
    leading=9.5,
    textColor=colors.white
)

table_body_style = ParagraphStyle(
    'TableBody',
    parent=styles['Normal'],
    fontName='Helvetica',
    fontSize=7.5,
    leading=9.5,
    textColor=dark_neutral
)

table_body_bold = ParagraphStyle(
    'TableBodyBold',
    parent=styles['Normal'],
    fontName='Helvetica-Bold',
    fontSize=7.5,
    leading=9.5,
    textColor=primary_color
)

story = []

# Cabeçalho
story.append(Paragraph("GUIA DE RISCAMENTO E CORTE NA MADEIRA (COMPENSADO NAVAL)", title_style))
story.append(Paragraph("<b>POWERCAT 8,50 m × 3,60 m — Casco Hard Chine & Cabine Central</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=6))

# 1. Instruções para o Casco
story.append(Paragraph("1. Tabela de Medidas das 9 Balizas do Casco (B0 a B8)", section_heading))
story.append(Paragraph("Medidas para transferir para as chapas de compensado naval (15 mm). O casco é simétrico em relação à Linha de Centro (CL = 0):", body_style))

t_data = [
    [Paragraph("Baliza / Estação", table_header_style), Paragraph("Posição (x)", table_header_style), Paragraph("Largura Topo (Total)", table_header_style), Paragraph("Largura Chine (Aresta)", table_header_style), Paragraph("Profundidade Fundo", table_header_style)],
    [Paragraph("B0 (Espelho Popa)", table_body_bold), Paragraph("0,0 m", table_body_style), Paragraph("0,76 m (±0,38m)", table_body_style), Paragraph("0,70 m (±0,35m)", table_body_style), Paragraph("1,35 m (-0,50m WL)", table_body_style)],
    [Paragraph("B1 (Praça Máquinas)", table_body_bold), Paragraph("1,0 m", table_body_style), Paragraph("0,80 m (±0,40m)", table_body_style), Paragraph("0,74 m (±0,37m)", table_body_style), Paragraph("1,39 m (-0,54m WL)", table_body_style)],
    [Paragraph("B2 (Porão Ré)", table_body_bold), Paragraph("2,0 m", table_body_style), Paragraph("0,82 m (±0,41m)", table_body_style), Paragraph("0,76 m (±0,38m)", table_body_style), Paragraph("1,40 m (-0,55m WL)", table_body_style)],
    [Paragraph("B3 (Porão Vante)", table_body_bold), Paragraph("3,0 m", table_body_style), Paragraph("0,82 m (±0,41m)", table_body_style), Paragraph("0,76 m (±0,38m)", table_body_style), Paragraph("1,40 m (-0,55m WL)", table_body_style)],
    [Paragraph("B4 (Meia-Nau)", table_body_bold), Paragraph("4,0 m", table_body_style), Paragraph("0,82 m (±0,41m)", table_body_style), Paragraph("0,76 m (±0,38m)", table_body_style), Paragraph("1,40 m (-0,55m WL)", table_body_style)],
    [Paragraph("B5 (Acomodações)", table_body_bold), Paragraph("5,0 m", table_body_style), Paragraph("0,80 m (±0,40m)", table_body_style), Paragraph("0,74 m (±0,37m)", table_body_style), Paragraph("1,40 m (-0,52m WL)", table_body_style)],
    [Paragraph("B6 (Cabine Vante)", table_body_bold), Paragraph("6,0 m", table_body_style), Paragraph("0,72 m (±0,36m)", table_body_style), Paragraph("0,66 m (±0,33m)", table_body_style), Paragraph("1,38 m (-0,48m WL)", table_body_style)],
    [Paragraph("B7 (Transição Proa)", table_body_bold), Paragraph("7,0 m", table_body_style), Paragraph("0,56 m (±0,28m)", table_body_style), Paragraph("0,50 m (±0,25m)", table_body_style), Paragraph("1,32 m (-0,40m WL)", table_body_style)],
    [Paragraph("B8 (Proa Wave-Piercing)", table_body_bold), Paragraph("8,0 m", table_body_style), Paragraph("0,28 m (±0,14m)", table_body_style), Paragraph("0,24 m (±0,12m)", table_body_style), Paragraph("1,20 m (-0,25m WL)", table_body_style)]
]

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

# 2. Instruções da Cabine Central
story.append(Paragraph("2. Painéis da Cabine Central (Cuddy Cabin & Hardtop)", section_heading))
story.append(Paragraph("• <b>Painel Frontal do Para-brisa:</b> 1 peça trapezoidal com base de 1,80 m, topo de 1,50 m e altura de 0,85 m. Recorte de 2 esquadrias para os vidros temperados/acrílico.", bullet_style))
story.append(Paragraph("• <b>Laterais da Cabine:</b> 2 peças simétricas (Boreste e Bombordo) com 2,60 m de comprimento, 0,95 m de altura e ângulo de proa de 60°. Abertura da janela lateral e recorte do respiro/louver vermelho.", bullet_style))
story.append(Paragraph("• <b>Teto Hardtop:</b> 1 placa com 2,40 m de comprimento por 2,00 m de largura com leve caimento para escoamento de água e reforço para o arco targa de radar.", bullet_style))
story.append(Spacer(1, 4))

# 3. Dicas de Oficina
story.append(Paragraph("3. Dicas Práticas para Riscamento e Corte na Oficina", section_heading))
story.append(Paragraph("1. <b>Linha de Centro e Nível:</b> Desenhe uma cruz perfeita (esquadro) no centro de cada placa antes de marcar as larguras.", bullet_style))
story.append(Paragraph("2. <b>Corte com Serra Tico-Tico:</b> Corte sempre a 1 ou 2 mm por fora do risco da linha vermelha e faça o acabamento com plaina/lixa para garantir a simetria perfeita.", bullet_style))
story.append(Paragraph("3. <b>Entalhes de Encaixe:</b> Entalhe central da quilha (6 x 6 cm) no ponto mais baixo e entalhes do chine (4 x 4 cm) para as longarinas de travamento.", bullet_style))

doc.build(story)
print("PDF Guia de Corte gerado com sucesso!")
