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

pdf_path = "/home/magdalena/eee/alunos/alberico-de-carvalho-santiago/Plantas_Individuais_Riscamento_Madeira.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=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=11,
    leading=14,
    textColor=primary_color,
    spaceBefore=6,
    spaceAfter=4
)

body_style = ParagraphStyle(
    'BodyDark',
    parent=styles['Normal'],
    fontName='Helvetica',
    fontSize=8.5,
    leading=12,
    textColor=dark_neutral,
    spaceAfter=3
)

bullet_style = ParagraphStyle(
    'BulletDark',
    parent=body_style,
    leftIndent=10,
    firstLineIndent=-7,
    spaceAfter=2.5
)

table_header_style = ParagraphStyle(
    'TableHeader',
    parent=styles['Normal'],
    fontName='Helvetica-Bold',
    fontSize=8,
    leading=10,
    textColor=colors.white
)

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

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

story = []

# Cabeçalho
story.append(Paragraph("PLANTAS DE RISCAMENTO INDIVIDUAL DIRETO NA MADEIRA", title_style))
story.append(Paragraph("<b>POWERCAT 8,50 m × 3,60 m — Casco Hard Chine e 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))

story.append(Paragraph("1. Como Usar para Riscar e Cortar na Oficina", section_heading))
story.append(Paragraph(
    "Existem dois métodos práticos para passar estes desenhos para as chapas de compensado naval (15 mm):<br/>"
    "• <b>Método 1 (Arquivo DXF 1:1):</b> Leve o arquivo <code>Gabaritos_Corte_1para1_Powercat_8_5m.dxf</code> a uma gráfica com plotter para imprimir em papel na escala 1:1 (tamanho real). Cole o papel sobre o compensado com cola spray e corte na linha vermelha com a serra tico-tico.<br/>"
    "• <b>Método 2 (Riscamento Direto com Trena e Régua):</b> Trace no meio da madeira uma cruz (Linha de Centro e Linha d'Água) e marque os pontos exatos de cada peça descritos na tabela abaixo:",
    body_style
))
story.append(Spacer(1, 4))

story.append(Paragraph("2. Tabela de Coordenadas Ponto a Ponto das Balizas do Casco", section_heading))

t_data = [
    [Paragraph("Peça / Baliza", table_header_style), Paragraph("Posição", table_header_style), Paragraph("Largura do Topo", table_header_style), Paragraph("Aresta (Chine)", table_header_style), Paragraph("Ponto do Fundo", table_header_style), Paragraph("Entalhes Encaixe", table_header_style)],
    [Paragraph("B0 (Espelho)", table_body_bold), Paragraph("x = 0,0 m", table_body_style), Paragraph("76,0 cm (±38,0 cm)", table_body_style), Paragraph("±35,0 cm a -35 cm da WL", table_body_style), Paragraph("Centro a -50 cm da WL", table_body_style), Paragraph("Quilha 6x6cm / Chine 4x4cm", table_body_style)],
    [Paragraph("B1 (Máquinas)", table_body_bold), Paragraph("x = 1,0 m", table_body_style), Paragraph("80,0 cm (±40,0 cm)", table_body_style), Paragraph("±37,0 cm a -36 cm da WL", table_body_style), Paragraph("Centro a -54 cm da WL", table_body_style), Paragraph("Quilha 6x6cm / Chine 4x4cm", table_body_style)],
    [Paragraph("B2 (Porão Ré)", table_body_bold), Paragraph("x = 2,0 m", table_body_style), Paragraph("82,0 cm (±41,0 cm)", table_body_style), Paragraph("±38,0 cm a -35 cm da WL", table_body_style), Paragraph("Centro a -55 cm da WL", table_body_style), Paragraph("Quilha 6x6cm / Chine 4x4cm", table_body_style)],
    [Paragraph("B3 (Porão Vante)", table_body_bold), Paragraph("x = 3,0 m", table_body_style), Paragraph("82,0 cm (±41,0 cm)", table_body_style), Paragraph("±38,0 cm a -35 cm da WL", table_body_style), Paragraph("Centro a -55 cm da WL", table_body_style), Paragraph("Quilha 6x6cm / Chine 4x4cm", table_body_style)],
    [Paragraph("B4 (Meia-Nau)", table_body_bold), Paragraph("x = 4,0 m", table_body_style), Paragraph("82,0 cm (±41,0 cm)", table_body_style), Paragraph("±38,0 cm a -35 cm da WL", table_body_style), Paragraph("Centro a -55 cm da WL", table_body_style), Paragraph("Quilha 6x6cm / Chine 4x4cm", table_body_style)],
    [Paragraph("B5 (Acomodações)", table_body_bold), Paragraph("x = 5,0 m", table_body_style), Paragraph("80,0 cm (±40,0 cm)", table_body_style), Paragraph("±37,0 cm a -30 cm da WL", table_body_style), Paragraph("Centro a -52 cm da WL", table_body_style), Paragraph("Quilha 6x6cm / Chine 4x4cm", table_body_style)],
    [Paragraph("B6 (Cabine Vante)", table_body_bold), Paragraph("x = 6,0 m", table_body_style), Paragraph("72,0 cm (±36,0 cm)", table_body_style), Paragraph("±33,0 cm a -23 cm da WL", table_body_style), Paragraph("Centro a -48 cm da WL", table_body_style), Paragraph("Quilha 6x6cm / Chine 4x4cm", table_body_style)],
    [Paragraph("B7 (Transição)", table_body_bold), Paragraph("x = 7,0 m", table_body_style), Paragraph("56,0 cm (±28,0 cm)", table_body_style), Paragraph("±25,0 cm a -12 cm da WL", table_body_style), Paragraph("Centro a -40 cm da WL", table_body_style), Paragraph("Quilha 6x6cm / Chine 4x4cm", table_body_style)],
    [Paragraph("B8 (Proa Piercing)", table_body_bold), Paragraph("x = 8,0 m", table_body_style), Paragraph("28,0 cm (±14,0 cm)", table_body_style), Paragraph("±12,0 cm a +5 cm da WL", table_body_style), Paragraph("Centro a -25 cm da WL", table_body_style), Paragraph("Quilha 6x6cm / Chine 4x4cm", table_body_style)]
]

t_table = Table(t_data, colWidths=[1.3*inch, 0.8*inch, 1.4*inch, 1.5*inch, 1.3*inch, 1.2*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, 6))

story.append(Paragraph("3. Painéis de Corte da Cabine Central", section_heading))
story.append(Paragraph("• <b>Para-brisa Frontal:</b> Chapa trapezoidal de 1,80 m na base, 1,50 m no topo e 0,85 m de altura vertical.", bullet_style))
story.append(Paragraph("• <b>Laterais da Cabine (2 peças):</b> 2,60 m de base, 0,95 m de altura, com a frente inclinada a 60°.", bullet_style))
story.append(Paragraph("• <b>Teto Rígido (Hardtop):</b> Chapa de 2,40 m × 2,00 m.", bullet_style))

doc.build(story)
print("PDF Plantas Individuais gerado com sucesso!")
