Spaces:
Runtime error
Runtime error
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() |