artificialguybr commited on
Commit
9e7436f
1 Parent(s): 83c7b07

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +48 -55
app.py CHANGED
@@ -1,57 +1,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()
 
1
  import gradio as gr
2
+ from pdf2docx import Converter
3
+ from fpdf import FPDF
4
  from docx import Document
5
+ import os
6
+
7
+ def pdf_to_word(pdf_file):
8
+ docx_filename = pdf_file.name.replace('.pdf', '.docx')
9
+
10
+ cv = Converter(pdf_file.name)
11
+ cv.convert(docx_filename, start=0, end=None)
12
+ cv.close()
13
+
14
+ return docx_filename
15
+
16
+ def word_to_pdf(docx_file):
17
+ pdf_filename = docx_file.name.replace('.docx', '.pdf')
18
+
19
+ document = Document(docx_file.name)
20
+ pdf = FPDF()
21
+
22
+ pdf.add_page()
23
+
24
+ for paragraph in document.paragraphs:
25
+ pdf.set_font("Arial", size = 12)
26
+ pdf.multi_cell(0, 10, paragraph.text)
27
+
28
+ pdf.output(pdf_filename)
29
+
30
+ return pdf_filename
31
+
32
+ with gr.Blocks() as app:
33
+ with gr.Row():
34
+ with gr.Column():
35
+ with gr.Accordion("PDF to Word"):
36
+ pdf_input = gr.File(label="Upload PDF")
37
+ convert_pdf_to_word = gr.Button("Convert to Word")
38
+ word_output = gr.File(label="Download Word File", type="file")
39
+
40
+ convert_pdf_to_word.click(pdf_to_word, inputs=[pdf_input], outputs=[word_output])
41
+
42
+ with gr.Column():
43
+ with gr.Accordion("Word to PDF"):
44
+ word_input = gr.File(label="Upload Word")
45
+ convert_word_to_pdf = gr.Button("Convert to PDF")
46
+ pdf_output = gr.File(label="Download PDF File", type="file")
47
+
48
+ convert_word_to_pdf.click(word_to_pdf, inputs=[word_input], outputs=[pdf_output])
49
+
50
+ app.launch()