pdf-a-zpl / app.py
tomaseo2022's picture
Update app.py
d7730f8
raw
history blame
1.58 kB
import gradio as gr
import fitz
from zipfile import ZipFile
import io
import os
# Funci贸n para convertir PDF a CBZ
def pdf_to_cbz(pdf_file):
try:
# Desempaquetar el archivo recibido
if pdf_file is None:
return "No se recibi贸 ning煤n archivo. Por favor, carga un archivo PDF."
pdf_filename, file_type, pdf_bytes = pdf_file
# Crear un documento con los bytes del PDF
pdf_document = fitz.open("pdf", pdf_bytes)
# Crear un archivo temporal en memoria para el CBZ
cbz_temp_file = io.BytesIO()
with ZipFile(cbz_temp_file, 'w') as zipf:
for page_num in range(len(pdf_document)):
page = pdf_document.load_page(page_num)
pix = page.get_pixmap()
img_bytes = pix.tobytes("png")
img_filename = f"{page_num}.png"
zipf.writestr(img_filename, img_bytes)
# Cerrar el documento PDF
pdf_document.close()
# Preparar el archivo CBZ para ser devuelto
cbz_temp_file.seek(0)
return cbz_temp_file.read(), "application/zip", "comic.cbz"
except Exception as e:
return f"Error al procesar el archivo: {str(e)}"
# Crear la interfaz de Gradio
iface = gr.Interface(
fn=pdf_to_cbz,
inputs=gr.File(type="file", label="Cargar archivo PDF"),
outputs=gr.File(type="file", 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()