pdf-a-cbz / app.py
tomaseo2022's picture
Update app.py
fb0ce36
raw
history blame
1.39 kB
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