File size: 2,180 Bytes
55a515e
9e7436f
5d9624d
cf73656
9e7436f
 
d9652e8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9e7436f
 
 
 
775af4c
9e7436f
 
 
 
 
cf73656
 
 
9e7436f
cf73656
85623b9
cf73656
 
 
 
 
9e7436f
 
 
 
 
d9652e8
 
9e7436f
 
cf73656
 
 
 
9e7436f
 
 
 
cf73656
 
 
 
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
65
66
67
68
import gradio as gr
from pdf2docx import Converter
from docx import Document
from fpdf import FPDF
import os

title_and_description = """
# PDF to Word and Word to PDF converter
Created by [@artificialguybr](https://artificialguy.com)

Upload a PDF file to convert to Word or a Word file to convert to PDF.

## Features
- **Easy to use**: Simple interface to upload PDF or Word files and convert to the desired format.
- **High quality**: Converts while maintaining the best possible quality.
- **Efficient processing**: Uses `pdf2docx`, `fpdf` and `docx` for fast and reliable conversions.
- **Unlimited Use**: No file limit. Use unlimited!

Feel free to use in your own documents!
"""

def pdf_to_word(pdf_file):
    docx_filename = pdf_file.name.replace('.pdf', '.docx')
    
    cv = Converter(pdf_file.name)
    cv.convert(docx_filename, multi_processing=True, start=0, end=None)
    cv.close()
    
    return docx_filename

def word_to_pdf(docx_file):
    pdf_filename = docx_file.name.replace('.docx', '.pdf')
    
    doc = Document(docx_file.name)
    pdf = FPDF()
    
    pdf.add_page()
    pdf.set_font("Arial", size=12)
    
    for para in doc.paragraphs:
        pdf.multi_cell(0, 10, para.text)
    
    pdf.output(pdf_filename)
    
    return pdf_filename

with gr.Blocks() as app:
    gr.Markdown(title_and_description)
    
    with gr.Row():
        with gr.Column():
            with gr.Accordion("PDF to Word"):
                pdf_input = gr.File(label="Upload PDF")
                convert_pdf_to_word = gr.Button("Convert to Word")
                word_output = gr.File(label="Download Word file", type="filepath")
                
                convert_pdf_to_word.click(pdf_to_word, inputs=[pdf_input], outputs=[word_output])
                
        with gr.Column():
            with gr.Accordion("Word to PDF"):
                word_input = gr.File(label="Upload Word")
                convert_word_to_pdf = gr.Button("Convert to PDF")
                pdf_output = gr.File(label="Download PDF file", type="filepath")
                
                convert_word_to_pdf.click(word_to_pdf, inputs=[word_input], outputs=[pdf_output])

app.launch()