Spaces:
Runtime error
Runtime error
| 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() | |