wf / app.py
admin08077's picture
Update app.py
5f8ac38 verified
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()