import gradio as gr import os os.system("pip install -r requirements.txt") os.system("pip install PyMuPDF") import fitz # PyMuPDF import tempfile import zipfile import io def cbr_to_pdf(cbr_bytes): try: # Verificar si se recibió un archivo if cbr_bytes is None: raise ValueError("No se recibió ningún archivo CBR.") # Utilizar BytesIO para manejar el archivo binario cbr_stream = io.BytesIO(cbr_bytes) # Cambiar la extensión de .cbr a .zip y descomprimir temp_dir = tempfile.mkdtemp() zip_filename = os.path.join(temp_dir, "input.zip") with open(zip_filename, "wb") as f: f.write(cbr_stream.read()) with zipfile.ZipFile(zip_filename, 'r') as zip_ref: zip_ref.extractall(temp_dir) # Crear un nuevo archivo PDF pdf_filename = os.path.join(temp_dir, "output.pdf") pdf = fitz.open() # Añadir cada imagen del CBR al PDF for img_file in sorted(os.listdir(temp_dir)): if img_file.endswith((".png", ".jpg", ".jpeg")): img_path = os.path.join(temp_dir, img_file) img = fitz.open(img_path) rect = img[0].rect # Dimensiones de la imagen pdf_page = pdf.new_page(width=rect.width, height=rect.height) # Crear página vacía con dimensiones de la imagen pdf_page.insert_image(rect, filename=img_path) # Insertar imagen en la página pdf.save(pdf_filename) pdf.close() return pdf_filename except Exception as e: return f"Error al procesar el archivo: {str(e)}" iface = gr.Interface( fn=cbr_to_pdf, inputs=gr.File(type="binary", label="Cargar archivo CBR"), outputs=gr.File(type="filepath", label="Descargar archivo PDF"), title="Conversor de CBR a PDF", description="Esta herramienta convierte un archivo CBR en un archivo PDF." ) if __name__ == "__main__": iface.launch()