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'{file}' for file in files]
return '
'.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("")
upload_btn.click(upload_pdf, inputs=pdf_upload, outputs=pdf_list)
# Custom JS to view PDF in iframe
js = """
"""
pdf_list.update(js)
# Run the app
demo.launch()