File size: 1,304 Bytes
9dc403e
 
 
 
 
 
 
 
 
 
5f8ac38
 
9dc403e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5f8ac38
9dc403e
 
 
5f8ac38
 
 
 
 
 
 
 
 
 
 
9dc403e
 
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
import gradio as gr
import os

# Directory where PDFs will be saved
UPLOAD_FOLDER = 'uploads'
os.makedirs(UPLOAD_FOLDER, exist_ok=True)

# Function to list uploaded PDFs
def list_pdfs():
    files = os.listdir(UPLOAD_FOLDER)
    pdf_list = [f'<a href="javascript:view_pdf(\'{file}\')">{file}</a>' for file in files]
    return '<br>'.join(pdf_list)

# Function to handle PDF upload
def upload_pdf(pdf_file):
    if pdf_file:
        file_name = pdf_file.name
        pdf_file.save(os.path.join(UPLOAD_FOLDER, file_name))
        return list_pdfs()
    return "No file uploaded."

# Gradio Interface
with gr.Blocks() as demo:
    with gr.Column():
        gr.Markdown("# PDF Catalog")
        pdf_list = gr.HTML(list_pdfs)
        pdf_upload = gr.File(label="Upload PDF", file_types=[".pdf"])
        upload_btn = gr.Button("Upload")
        pdf_viewer = gr.HTML("<iframe id='pdf_viewer' style='width:100%; height:500px;'></iframe>")

    upload_btn.click(upload_pdf, inputs=pdf_upload, outputs=pdf_list)

    # Custom JS to view PDF in iframe
    js = """
    <script>
        function view_pdf(file) {
            const viewer = document.getElementById('pdf_viewer');
            viewer.src = `/file=uploads/${file}`;
        }
    </script>
    """
    pdf_list.update(js)

# Run the app
demo.launch()