Spaces:
Runtime error
Runtime error
<html lang="en"> | |
<head> | |
<meta charset="UTF-8"> | |
<title>Upload PDF for Sprite Extraction</title> | |
<style> | |
body { | |
font-family: Arial; | |
padding: 20px; | |
background: #f5f5f5; | |
} | |
.sprite { | |
margin: 20px; | |
padding: 10px; | |
background: white; | |
border: 1px solid #ccc; | |
display: inline-block; | |
width: 250px; | |
} | |
.sprite img { | |
width: 100%; | |
} | |
#status { | |
margin-top: 15px; | |
font-weight: bold; | |
} | |
</style> | |
</head> | |
<body> | |
<h2>Upload PDF for Image Extraction and Captioning</h2> | |
<form id="pdfForm" enctype="multipart/form-data"> | |
<input type="file" id="pdfFile" name="pdf_file" accept="application/pdf"> | |
<button type="submit">Upload & Process</button> | |
</form> | |
<div id="status"></div> | |
<div id="result-container"></div> | |
<script> | |
const form = document.getElementById('pdfForm'); | |
const statusEl = document.getElementById('status'); | |
const resultEl = document.getElementById('result-container'); | |
form.addEventListener('submit', async (e) => { | |
e.preventDefault(); | |
const fileInput = document.getElementById('pdfFile'); | |
if (!fileInput.files[0]) { | |
alert('Please select a PDF file.'); | |
return; | |
} | |
statusEl.textContent = 'Uploading and processing...'; | |
resultEl.innerHTML = ''; | |
const formData = new FormData(); | |
formData.append('pdf_file', fileInput.files[0]); | |
try { | |
const res = await fetch('/process_pdf', { | |
method: 'POST', | |
body: formData | |
}); | |
const data = await res.json(); | |
if (!res.ok) throw new Error(data.error || 'Upload failed'); | |
statusEl.textContent = data.message; | |
const sprites = data.sprites; | |
if (!sprites || typeof sprites !== "object") { | |
statusEl.textContent = '⚠️ No valid sprite data received.'; | |
return; | |
} | |
for (const [key, sprite] of Object.entries(sprites)) { | |
const div = document.createElement('div'); | |
div.className = 'sprite'; | |
const img = document.createElement('img'); | |
img.src = `data:image/png;base64,${sprite.base64}`; | |
const name = document.createElement('h4'); | |
name.textContent = sprite.name; | |
const desc = document.createElement('p'); | |
desc.textContent = sprite.description; | |
div.appendChild(img); | |
div.appendChild(name); | |
div.appendChild(desc); | |
resultEl.appendChild(div); | |
} | |
} catch (err) { | |
statusEl.textContent = `❌ Error: ${err.message}`; | |
} | |
}); | |
</script> | |
</body> | |
</html> |