Spaces:
Runtime error
Runtime error
File size: 1,816 Bytes
55a515e 5d9624d 55a515e 5d9624d |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
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() |