artificialguybr's picture
Update app.py
5d9624d verified
raw
history blame
1.82 kB
import gradio as gr
from docx import Document
from PyPDF2 import PdfFileReader, PdfFileWriter
def converter_pdf_para_docx(caminho_pdf):
"""Converte um arquivo PDF para DOCX."""
leitor_pdf = PdfFileReader(caminho_pdf)
escritor_docx = Document()
for pagina in leitor_pdf.pages:
texto_pagina = pagina.extractText()
escritor_docx.add_paragraph(texto_pagina)
return escritor_docx
def converter_docx_para_pdf(caminho_docx):
"""Converte um arquivo DOCX para PDF."""
escritor_pdf = PdfFileWriter()
leitor_docx = Document(caminho_docx)
for paragrafo in leitor_docx.paragraphs:
escritor_pdf.addPage(PdfPage().createBlankPage())
escritor_pdf.getPage(0).drawText(paragrafo.text)
return escritor_pdf
def salvar_arquivo(escritor, formato, nome_arquivo):
"""Salva o documento no formato especificado."""
if formato == "docx":
escritor.save(f"{nome_arquivo}.docx")
elif formato == "pdf":
escritor.write(f"{nome_arquivo}.pdf")
# Interface Gradio
# Entrada
caminho_arquivo = gr.File(label="Selecione o arquivo")
# Opções de conversão
opcoes_conversao = gr.Radio(choices=["PDF para Word", "Word para PDF"], label="Conversão")
# Saída
nome_arquivo = gr.Text(label="Nome do arquivo")
# Botão para converter
botao_converter = gr.Button(value="Converter")
# Função para executar a conversão
def converter(caminho, tipo_conversao, nome):
if tipo_conversao == "PDF para Word":
escritor = converter_pdf_para_docx(caminho)
formato = "docx"
else:
escritor = converter_docx_para_pdf(caminho)
formato = "pdf"
salvar_arquivo(escritor, formato, nome)
# Interface
interface = gr.Interface(fn=converter, inputs=[caminho_arquivo, opcoes_conversao], outputs=[nome_arquivo], title="Conversor de PDF/Word", theme="default")
# Exibir a interface
interface.launch()