Spaces:
Sleeping
Sleeping
import streamlit as st | |
import fitz # PyMuPDF | |
from io import BytesIO | |
import os | |
def replace_text_in_pdf(template_path, data): | |
pdf_document = fitz.open(template_path) | |
for page_num in range(len(pdf_document)): | |
page = pdf_document.load_page(page_num) | |
for key, value in data.items(): | |
marker = f"<{key}>" | |
text_instances = page.search_for(marker) | |
if text_instances: | |
print(f"P谩gina {page_num + 1}: Reemplazando '{marker}' con '{value}'") # Mensaje de depuraci贸n | |
for inst in text_instances: | |
# Dibuja un rect谩ngulo blanco sobre el texto del marcador | |
page.draw_rect(inst, color=(1, 1, 1), fill=(1, 1, 1)) | |
# Ajusta la posici贸n para colocar el nuevo texto exactamente debajo del marcador | |
# El ajuste de 10 unidades es un valor de ejemplo, modif铆calo seg煤n tus necesidades | |
adjusted_position = (inst[0], inst[1] + 9) | |
# Inserta el nuevo texto en la posici贸n ajustada | |
page.insert_text(adjusted_position, value, fontsize=12, color=(0, 0, 0)) | |
output = BytesIO() | |
pdf_document.save(output) | |
pdf_document.close() | |
output.seek(0) | |
return output | |
st.title("Rellenar Plantilla PDF") | |
# Formularios para ingresar los datos del usuario | |
nombre = st.text_input("Nombre") | |
edad = st.text_input("Edad") | |
peso = st.text_input("Peso") | |
if st.button("Generar PDF"): | |
if nombre and edad and peso: | |
# Cargar la plantilla PDF | |
# template_path = "Plantilla pdf.pdf" | |
# Define the path to the template PDF..... | |
template_path = os.path.join("data", "Plantilla pdf.pdf") | |
# Crear el diccionario de datos para rellenar el PDF | |
data = { | |
"NOMBRE": nombre, | |
"EDAD": edad, | |
"PESO": peso | |
} | |
# Rellenar el PDF con los datos | |
pdf_output = replace_text_in_pdf(template_path, data) | |
# Proveer el PDF para descargar | |
st.download_button( | |
label="Descargar PDF", | |
data=pdf_output, | |
file_name="PDF_rellenado.pdf", | |
mime="application/pdf" | |
) | |
else: | |
st.error("Por favor completa todos los campos antes de generar el PDF.") | |