import gradio as gr import os import zipfile from PIL import Image from reportlab.pdfgen import canvas import io # Función para convertir de CBZ a PDF def cbz_to_pdf(cbz_file): try: # Extraemos los bytes del archivo CBZ cbz_bytes = cbz_file # Creamos un directorio temporal para extraer las imágenes temp_dir = "temp_images" os.makedirs(temp_dir, exist_ok=True) # Descomprimimos el archivo CBZ with zipfile.ZipFile(io.BytesIO(cbz_bytes), 'r') as zip_ref: zip_ref.extractall(temp_dir) # Creamos un archivo temporal para el PDF output_pdf_path = "output.pdf" # Inicializamos el objeto canvas de reportlab para crear el PDF c = canvas.Canvas(output_pdf_path) # Procesamos cada imagen y la añadimos al PDF for image_path in sorted(os.listdir(temp_dir)): img = Image.open(os.path.join(temp_dir, image_path)) c.setPageSize((img.width, img.height)) c.drawImage(os.path.join(temp_dir, image_path), 0, 0) c.showPage() # Guardamos el PDF c.save() # Limpiamos el directorio temporal for file in os.listdir(temp_dir): os.remove(os.path.join(temp_dir, file)) os.rmdir(temp_dir) # Devolvemos la ruta del archivo PDF return output_pdf_path except Exception as e: return f"Error al procesar el archivo CBZ: {str(e)}" iface_cbz_to_pdf = gr.Interface( fn=cbz_to_pdf, inputs=gr.File(type="binary", label="Cargar archivo CBZ"), outputs=gr.File(type="filepath", label="Descargar archivo PDF"), title="Conversor de CBZ a PDF", description="Esta herramienta convierte archivos CBZ a PDF." ) if __name__ == "__main__": iface_cbz_to_pdf.launch()