Spaces:
Sleeping
Sleeping
import gradio as gr | |
import fitz | |
from zipfile import ZipFile | |
import os | |
from tempfile import NamedTemporaryFile | |
def pdf_to_cbz(pdf_file): | |
if not pdf_file: | |
return create_error_file("No se cargó ningún archivo. Por favor, carga un archivo PDF.") | |
try: | |
# Desempaqueta el archivo PDF | |
pdf_filename, file_type, pdf_bytes = pdf_file | |
except ValueError: | |
return create_error_file("Error al procesar el archivo. Asegúrate de que sea un archivo PDF válido.") | |
doc = fitz.open(stream=pdf_bytes, filetype="pdf") | |
with NamedTemporaryFile(delete=False, suffix=".cbz") as temp_cbz: | |
with ZipFile(temp_cbz.name, 'w') as zipf: | |
for page_num in range(len(doc)): | |
page = doc.load_page(page_num) | |
pix = page.get_pixmap() | |
img_data = pix.tobytes("png") | |
img_filename = f"page_{page_num + 1}.png" | |
zipf.writestr(img_filename, img_data) | |
doc.close() | |
return temp_cbz.name | |
def create_error_file(error_message): | |
with NamedTemporaryFile(delete=False, suffix=".txt") as temp_txt: | |
temp_txt.write(error_message.encode()) | |
return temp_txt.name | |
iface = gr.Interface( | |
fn=pdf_to_cbz, | |
inputs=gr.File(type="binary", label="Cargar archivo PDF"), | |
outputs=gr.File(label="Descargar archivo CBZ"), | |
title="Conversor de PDF a CBZ", | |
de | |