artificialguybr commited on
Commit
5d9624d
1 Parent(s): 0ee8ad6

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +54 -47
app.py CHANGED
@@ -1,50 +1,57 @@
1
  import gradio as gr
 
2
  from PyPDF2 import PdfFileReader, PdfFileWriter
3
- import docx
4
- import io
5
-
6
- def pdf_to_word(pdf_file):
7
- pdfReader = PdfFileReader(pdf_file)
8
- doc = docx.Document()
9
- for page_num in range(pdfReader.numPages):
10
- page = pdfReader.getPage(page_num)
11
- text = page.extractText()
12
- doc.add_paragraph(text)
13
-
14
- doc_io = io.BytesIO() # Criar um buffer de memória
15
- doc.save(doc_io) # Salvar o documento no buffer
16
- doc_io.seek(0) # Voltar ao início do buffer
17
- return doc_io.getvalue() # Retornar o conteúdo binário
18
-
19
-
20
- def word_to_pdf(docx_file):
21
- doc = docx.Document(docx_file)
22
- pdf_writer = PdfFileWriter()
23
- packet = io.BytesIO()
24
-
25
- for para in doc.paragraphs:
26
- packet.write(para.text.encode('utf-8'))
27
-
28
- pdf_writer.addBlankPage()
29
- packet.seek(0)
30
- return packet.getvalue()
31
-
32
- with gr.Blocks() as demo:
33
- gr.Markdown("PDF <--> Word Converter")
34
- with gr.Row():
35
- with gr.Column():
36
- gr.Markdown("### PDF to Word")
37
- pdf_input = gr.File(label="Upload PDF")
38
- word_output = gr.File(label="Download Word", type="binary")
39
- pdf_to_word_btn = gr.Button("Convert")
40
- with gr.Column():
41
- gr.Markdown("### Word to PDF")
42
- word_input = gr.File(label="Upload Word")
43
- pdf_output = gr.File(label="Download PDF", type="binary")
44
- word_to_pdf_btn = gr.Button("Convert")
45
-
46
- pdf_to_word_btn.click(pdf_to_word, inputs=[pdf_input], outputs=[word_output])
47
- word_to_pdf_btn.click(word_to_pdf, inputs=[word_input], outputs=[pdf_output])
48
-
49
- demo.launch()
50
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  import gradio as gr
2
+ from docx import Document
3
  from PyPDF2 import PdfFileReader, PdfFileWriter
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4
 
5
+ def converter_pdf_para_docx(caminho_pdf):
6
+ """Converte um arquivo PDF para DOCX."""
7
+ leitor_pdf = PdfFileReader(caminho_pdf)
8
+ escritor_docx = Document()
9
+ for pagina in leitor_pdf.pages:
10
+ texto_pagina = pagina.extractText()
11
+ escritor_docx.add_paragraph(texto_pagina)
12
+ return escritor_docx
13
+
14
+ def converter_docx_para_pdf(caminho_docx):
15
+ """Converte um arquivo DOCX para PDF."""
16
+ escritor_pdf = PdfFileWriter()
17
+ leitor_docx = Document(caminho_docx)
18
+ for paragrafo in leitor_docx.paragraphs:
19
+ escritor_pdf.addPage(PdfPage().createBlankPage())
20
+ escritor_pdf.getPage(0).drawText(paragrafo.text)
21
+ return escritor_pdf
22
+
23
+ def salvar_arquivo(escritor, formato, nome_arquivo):
24
+ """Salva o documento no formato especificado."""
25
+ if formato == "docx":
26
+ escritor.save(f"{nome_arquivo}.docx")
27
+ elif formato == "pdf":
28
+ escritor.write(f"{nome_arquivo}.pdf")
29
+
30
+ # Interface Gradio
31
+ # Entrada
32
+ caminho_arquivo = gr.File(label="Selecione o arquivo")
33
+
34
+ # Opções de conversão
35
+ opcoes_conversao = gr.Radio(choices=["PDF para Word", "Word para PDF"], label="Conversão")
36
+
37
+ # Saída
38
+ nome_arquivo = gr.Text(label="Nome do arquivo")
39
+
40
+ # Botão para converter
41
+ botao_converter = gr.Button(value="Converter")
42
+
43
+ # Função para executar a conversão
44
+ def converter(caminho, tipo_conversao, nome):
45
+ if tipo_conversao == "PDF para Word":
46
+ escritor = converter_pdf_para_docx(caminho)
47
+ formato = "docx"
48
+ else:
49
+ escritor = converter_docx_para_pdf(caminho)
50
+ formato = "pdf"
51
+ salvar_arquivo(escritor, formato, nome)
52
+
53
+ # Interface
54
+ interface = gr.Interface(fn=converter, inputs=[caminho_arquivo, opcoes_conversao], outputs=[nome_arquivo], title="Conversor de PDF/Word", theme="default")
55
+
56
+ # Exibir a interface
57
+ interface.launch()