import gradio as gr import fitz import tempfile import zipfile import os def pdf_to_cbz(pdf_file): try: # Verificar si se recibió un archivo if pdf_file is None: raise ValueError("No se recibió ningún archivo PDF.") # Leer el archivo PDF desde los bytes recibidos pdf = fitz.open(stream=pdf_file, filetype="pdf") # Crear un archivo ZIP temporal para el CBZ temp_dir = tempfile.mkdtemp() cbz_filename = os.path.join(temp_dir, "output.cbz") with zipfile.ZipFile(cbz_filename, "w") as zipf: for page_num in range(len(pdf)): page = pdf.load_page(page_num) pix = page.get_pixmap() img_data = pix.tobytes("png") zipf.writestr(f"page_{page_num + 1}.png", img_data) # Cerrar el documento PDF pdf.close() return cbz_filename except Exception as e: return f"Error al procesar el archivo: {str(e)}" iface = gr.Interface( fn=pdf_to_cbz, inputs=gr.File(type="binary", label="Cargar archivo PDF"), outputs=gr.File(type="filepath", label="Descargar archivo CBZ"), title="Conversor de PDF a CBZ", description="Esta herramienta convierte un archivo PDF en un archivo CBZ." ) if __name__ == "__main__": iface.launch()