File size: 2,148 Bytes
55a515e
9e7436f
5d9624d
cf73656
9e7436f
 
9dd1d3f
 
9e7436f
9dd1d3f
 
9e7436f
 
9dd1d3f
9e7436f
9dd1d3f
 
cf73656
9dd1d3f
abf1208
 
85623b9
4f69071
abf1208
478120c
cf73656
9dd1d3f
 
abf1208
 
9dd1d3f
 
 
 
 
2512841
9dd1d3f
 
 
 
478120c
9dd1d3f
 
9e7436f
 
 
 
9dd1d3f
 
 
 
9e7436f
9dd1d3f
9e7436f
 
9dd1d3f
 
 
 
9e7436f
9dd1d3f
9e7436f
cf73656
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
58
59
60
61
62
63
64
import gradio as gr
from pdf2docx import Converter
from docx import Document
from fpdf import FPDF
import os

def pdf_para_word(arquivo_pdf):
    nome_docx = arquivo_pdf.name.replace('.pdf', '.docx')
    
    cv = Converter(arquivo_pdf.name)
    cv.convert(nome_docx, multi_processing=True, start=0, end=None)
    cv.close()
    
    return nome_docx

def word_para_pdf(arquivo_docx):
    nome_pdf = "output.pdf"
    
    doc = Document(arquivo_docx)
    pdf = FPDF(format='A4')
    pdf.set_auto_page_break(auto=True, margin=15)
    pdf.add_page()
    pdf.add_font('Arial', '', 'Arial.ttf', uni=True)
    pdf.set_font('Arial', size=12)

    for para in doc.paragraphs:
        texto = para.text.strip()
        if not texto:  # Ignorar linhas vazias
            continue
        # Quebrar o texto em várias linhas se necessário
        palavras = texto.split()
        linha = ''
        for palavra in palavras:
            if pdf.get_string_width(linha + palavra) < (pdf.w - 2 * pdf.l_margin):
                linha += palavra + ' '
            else:
                pdf.cell(0, 10, linha, ln=True)
                linha = palavra + ' '
        if linha:
            pdf.cell(0, 10, linha, ln=True)

    pdf.output(nome_pdf)
    return nome_pdf

with gr.Blocks() as app:
    with gr.Row():
        with gr.Column():
            with gr.Accordion("PDF para Word"):
                entrada_pdf = gr.File(label="Enviar PDF")
                converter_pdf_para_word = gr.Button("Converter para Word")
                saida_word = gr.File(label="Baixar arquivo Word", type="filepath")
                
                converter_pdf_para_word.click(pdf_para_word, inputs=[entrada_pdf], outputs=[saida_word])
                
        with gr.Column():
            with gr.Accordion("Word para PDF"):
                entrada_word = gr.File(label="Enviar Word")
                converter_word_para_pdf = gr.Button("Converter para PDF")
                saida_pdf = gr.File(label="Baixar arquivo PDF", type="filepath")
                
                converter_word_para_pdf.click(word_para_pdf, inputs=[entrada_word], outputs=[saida_pdf])

app.launch()