File size: 1,327 Bytes
d8bf29e
1405ca8
b42ca12
22ea758
b42ca12
4efd143
cf43abc
effee4c
22ea758
44ff57c
22ea758
b42ca12
ceb26e7
 
22ea758
b42ca12
 
 
 
22ea758
 
fb0ce36
22ea758
 
fb0ce36
44ff57c
22ea758
 
b42ca12
32f94ef
44ff57c
 
866e746
32f94ef
 
5d2f8aa
b42ca12
1405ca8
45026a4
 
 
 
22ea758
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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()