tomaseo2022 commited on
Commit
44ff57c
1 Parent(s): 45026a4

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +27 -24
app.py CHANGED
@@ -1,43 +1,46 @@
1
  import gradio as gr
2
  import fitz
3
  from zipfile import ZipFile
 
4
  import os
5
- from tempfile import NamedTemporaryFile
6
 
 
7
  def pdf_to_cbz(pdf_file):
8
- if not pdf_file:
9
- return create_error_file("No se carg贸 ning煤n archivo. Por favor, carga un archivo PDF.")
10
-
11
  try:
12
- # Desempaqueta el archivo PDF
 
 
 
13
  pdf_filename, file_type, pdf_bytes = pdf_file
14
- except ValueError:
15
- return create_error_file("Error al procesar el archivo. Aseg煤rate de que sea un archivo PDF v谩lido.")
16
 
17
- doc = fitz.open(stream=pdf_bytes, filetype="pdf")
 
 
 
 
18
 
19
- with NamedTemporaryFile(delete=False, suffix=".cbz") as temp_cbz:
20
- with ZipFile(temp_cbz.name, 'w') as zipf:
21
- for page_num in range(len(doc)):
22
- page = doc.load_page(page_num)
23
  pix = page.get_pixmap()
24
- img_data = pix.tobytes("png")
25
- img_filename = f"page_{page_num + 1}.png"
26
- zipf.writestr(img_filename, img_data)
27
 
28
- doc.close()
29
-
30
- return temp_cbz.name
31
 
32
- def create_error_file(error_message):
33
- with NamedTemporaryFile(delete=False, suffix=".txt") as temp_txt:
34
- temp_txt.write(error_message.encode())
35
- return temp_txt.name
 
36
 
 
37
  iface = gr.Interface(
38
  fn=pdf_to_cbz,
39
- inputs=gr.File(type="binary", label="Cargar archivo PDF"),
40
- outputs=gr.File(label="Descargar archivo CBZ"),
41
  title="Conversor de PDF a CBZ",
42
  description="Esta herramienta convierte un archivo PDF en un archivo CBZ."
43
  )
 
1
  import gradio as gr
2
  import fitz
3
  from zipfile import ZipFile
4
+ import io
5
  import os
 
6
 
7
+ # Funci贸n para convertir PDF a CBZ
8
  def pdf_to_cbz(pdf_file):
 
 
 
9
  try:
10
+ # Desempaquetar el archivo recibido
11
+ if pdf_file is None:
12
+ return "No se recibi贸 ning煤n archivo. Por favor, carga un archivo PDF."
13
+
14
  pdf_filename, file_type, pdf_bytes = pdf_file
 
 
15
 
16
+ # Crear un documento con los bytes del PDF
17
+ pdf_document = fitz.open("pdf", pdf_bytes)
18
+
19
+ # Crear un archivo temporal en memoria para el CBZ
20
+ cbz_temp_file = io.BytesIO()
21
 
22
+ with ZipFile(cbz_temp_file, 'w') as zipf:
23
+ for page_num in range(len(pdf_document)):
24
+ page = pdf_document.load_page(page_num)
 
25
  pix = page.get_pixmap()
26
+ img_bytes = pix.tobytes("png")
27
+ img_filename = f"{page_num}.png"
28
+ zipf.writestr(img_filename, img_bytes)
29
 
30
+ # Cerrar el documento PDF
31
+ pdf_document.close()
 
32
 
33
+ # Preparar el archivo CBZ para ser devuelto
34
+ cbz_temp_file.seek(0)
35
+ return cbz_temp_file.read(), "application/zip", "comic.cbz"
36
+ except Exception as e:
37
+ return f"Error al procesar el archivo: {str(e)}"
38
 
39
+ # Crear la interfaz de Gradio
40
  iface = gr.Interface(
41
  fn=pdf_to_cbz,
42
+ inputs=gr.File(type="file", label="Cargar archivo PDF"),
43
+ outputs=gr.File(type="file", label="Descargar archivo CBZ"),
44
  title="Conversor de PDF a CBZ",
45
  description="Esta herramienta convierte un archivo PDF en un archivo CBZ."
46
  )