from docx import Document
from docx.shared import Inches, Pt
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.oxml.ns import qn
from docx.oxml import OxmlElement
from PIL import Image
import os
# Load logo and resize
logo_path = "/mnt/data/file-7xXBwpX9eZCykswwjBMnV3"
logo = Image.open(logo_path)
logo_resized_path = "/mnt/data/logo_resized.png"
logo.thumbnail((150, 150))
logo.save(logo_resized_path)
# Create document
doc = Document()
# Title page with logo
doc.add_picture(logo_resized_path, width=Inches(1.5))
doc.paragraphs[-1].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
doc.add_paragraph().add_run("ASOCIACIÓN DEPORTIVA IBA CHILE").bold = True
doc.paragraphs[-1].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
doc.add_paragraph().add_run("Selección Oficial de Karate - Temporada 2025").bold = True
doc.paragraphs[-1].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
doc.add_paragraph().add_run("Compromisos y Requisitos para Atletas y Apoderados").bold = True
doc.paragraphs[-1].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
doc.add_page_break()
# Introduction
doc.add_heading("Introducción", level=1)
doc.add_paragraph(
"Estimadas familias:\\n"
"La presente carta tiene como objetivo formalizar los compromisos y responsabilidades que deben asumir tanto los atletas seleccionados "
"como sus respectivos apoderados o tutores, en el marco del proceso competitivo y formativo de la Selección Oficial de Karate de la Asociación IBA Chile "
"para la temporada 2025.\\n\\n"
"Representar a nuestra asociación en competencias regionales, nacionales e internacionales es un privilegio que implica esfuerzo, disciplina y trabajo conjunto. "
"Por ello, es fundamental establecer un marco de compromiso y responsabilidad que asegure un proceso serio, respetuoso y coherente con los valores del karate "
"y del deporte en general.\\n\\n"
"A continuación, se detallan los compromisos que deberán ser asumidos de forma íntegra por cada parte involucrada."
)
# Commitments
doc.add_heading("Compromisos del Atleta", level=1)
athlete_points = [
"Asistir puntualmente a todos los entrenamientos, evaluaciones y actividades programadas por el cuerpo técnico.",
"Mantener una conducta respetuosa, disciplinada y colaborativa con compañeros, entrenadores y dirigentes.",
"Cumplir con las indicaciones técnicas, físicas y de preparación entregadas por el equipo de trabajo.",
"Usar correctamente el uniforme de la selección y mantener una buena presentación personal.",
"Participar activamente en actividades de preparación física, técnica, táctica y mental."
]
for point in athlete_points:
doc.add_paragraph(point, style='List Number')
doc.add_heading("Compromisos del Apoderado o Tutor", level=1)
parent_points = [
"Velar por la asistencia y puntualidad del atleta a todas las actividades programadas.",
"Mantener una comunicación fluida y respetuosa con entrenadores y directivos.",
"Apoyar el proceso formativo y competitivo del atleta, fomentando valores como la responsabilidad, el respeto y el compromiso.",
"Cumplir con los aportes económicos necesarios para inscripciones, traslados, implementos u otros gastos asociados.",
"Firmar las autorizaciones necesarias para viajes, actividades o compromisos especiales.",
"Responsabilizarse por la alimentación del atleta y colaborar en el control del peso corporal, asegurando que se mantenga dentro de los rangos establecidos para su categoría competitiva."
]
for point in parent_points:
doc.add_paragraph(point, style='List Number')
# Final section
doc.add_heading("Disposiciones Finales", level=1)
doc.add_paragraph(
"La firma del presente documento representa el compromiso formal y voluntario de cada parte para cumplir con los puntos mencionados anteriormente. "
"El incumplimiento de alguno de estos compromisos podrá conllevar sanciones internas o exclusión del proceso selectivo, de acuerdo a las normas internas "
"de la Asociación IBA Chile."
)
# Signature section
doc.add_page_break()
doc.add_heading("Firmas de Compromiso", level=1)
table = doc.add_table(rows=7, cols=2)
table.style = 'Table Grid'
signers = [
("Nombre del deportista:", "Firma del deportista:"),
("Nombre del apoderado:", "Firma del apoderado:"),
("Nombre del entrenador 1:", "Firma entrenador/a 1:"),
("Nombre del entrenador 2:", "Firma entrenador/a 2:"),
("Nombre del comité de la federación:", "Firma comité de la federación:"),
("Nombre Presidenta de la Federación:", "Firma Presidenta de la Federación:"),
("Fecha:", "Lugar:")
]
for row, (label1, label2) in zip(table.rows, signers):
row.cells\[0\].text = label1
row.cells\[1\].text = label2
# Save Word and PDF
docx_path = "/mnt/data/Compromiso_Selección_Karate_IBK_2025.docx"
pdf_path = "/mnt/data/Compro
miso_Selección_Karate_IBK_2025.pdf"
doc.save(docx_path)
docx_path # Returning path for download