import pypdf
from reportlab.pdfgen import canvas
from reportlab.lib import colors
import io
import os

pdf_origem = '/home/magdalena/.hermes/cache/documents/doc_42c618853fd4_10_Plano-Velico__1_.pdf'
reader = pypdf.PdfReader(pdf_origem)
writer = pypdf.PdfWriter()

# Dimensões da Página 1: 841.89 x 1190.55 pt
w1 = float(reader.pages[0].mediabox.width)
h1 = float(reader.pages[0].mediabox.height)

m_pt = (1000.0 / 75.0) * (72.0 / 25.4) # 37.795275 pt por metro
x_mastro = 475.9
dist_popa = 10.656 # metros
dist_proa = 4.144  # metros
x_popa = x_mastro - dist_popa * m_pt # 73.2 pt
x_proa = x_mastro + dist_proa * m_pt # 632.5 pt

# Criar overlay em canvas
packet = io.BytesIO()
can = canvas.Canvas(packet, pagesize=(w1, h1))

y_cota = 155.0
c_cota = colors.HexColor('#0F2D4A')
c_line = colors.HexColor('#2A4365')
c_bg = colors.white

can.saveState()
can.setStrokeColor(c_line)
can.setFillColor(c_cota)
can.setLineWidth(0.6)

# Linhas de chamada verticais tracejadas descendo da base do casco / convés até a linha de cota
can.setDash([2, 2])
can.line(x_popa, 195, x_popa, 145)      # Linha na popa
can.line(x_mastro, 270, x_mastro, 145)  # Linha no centro do mastro
can.line(x_proa, 195, x_proa, 145)      # Linha na roda de proa
can.setDash([])

# 1. COTA HORIZONTAL: Popa ao Mastro (10,656 m)
can.line(x_popa, y_cota, x_mastro, y_cota)
can.line(x_popa - 3, y_cota - 3, x_popa + 3, y_cota + 3)
can.line(x_mastro - 3, y_cota - 3, x_mastro + 3, y_cota + 3)

txt1 = "POPA AO MASTRO: 10,656 m"
can.setFont("Helvetica-Bold", 7.0)
tw1 = can.stringWidth(txt1, "Helvetica-Bold", 7.0)
cx1 = (x_popa + x_mastro) / 2.0
can.setFillColor(c_bg)
can.rect(cx1 - tw1/2 - 3, y_cota - 4, tw1 + 6, 8, fill=1, stroke=0)
can.setFillColor(c_cota)
can.drawCentredString(cx1, y_cota - 2.5, txt1)

# 2. COTA HORIZONTAL: Mastro à Proa (4,144 m)
can.line(x_mastro, y_cota, x_proa, y_cota)
can.line(x_proa - 3, y_cota - 3, x_proa + 3, y_cota + 3)

txt2 = "MASTRO À PROA: 4,144 m"
tw2 = can.stringWidth(txt2, "Helvetica-Bold", 7.0)
cx2 = (x_mastro + x_proa) / 2.0
can.setFillColor(c_bg)
can.rect(cx2 - tw2/2 - 3, y_cota - 4, tw2 + 6, 8, fill=1, stroke=0)
can.setFillColor(c_cota)
can.drawCentredString(cx2, y_cota - 2.5, txt2)

# 3. Bloco informativo adicional junto à legenda superior técnica
can.setFont("Helvetica-Bold", 7.0)
can.setFillColor(colors.HexColor('#1A365D'))
can.drawString(37.7, 948, "POSIÇÃO DO MASTRO")
can.setFont("Helvetica", 7.0)
can.setFillColor(colors.HexColor('#2D3748'))
can.drawString(140.0, 948, "10,656 m da popa (72,0% L) · 4,144 m da proa (28,0% L)")

can.restoreState()
can.save()
packet.seek(0)

overlay_pdf = pypdf.PdfReader(packet)
page0 = reader.pages[0]
page0.merge_page(overlay_pdf.pages[0])
writer.add_page(page0)

# Adiciona páginas 2 e 3 sem alteração
for p in reader.pages[1:]:
    writer.add_page(p)

destinos = [
    "/home/magdalena/eee/grupos/grupo-3/Entrega Final/15_Balanco_Velico_Saveiro_Mestre_da_Cana_Grupo_3.pdf",
    "/home/magdalena/eee/grupos/grupo-3/15_Balanco_Velico_Saveiro_Mestre_da_Cana_Grupo_3.pdf",
    "/home/magdalena/eee/alunos/air/15_Balanco_Velico_Saveiro_Mestre_da_Cana_Grupo_3.pdf"
]

for dest in destinos:
    with open(dest, "wb") as f_out:
        writer.write(f_out)
    print(f"Atualizado com sucesso em: {dest}")
