doc-analyzer / static /app.js
Leearg's picture
Upload static/app.js with huggingface_hub
540cb20 verified
Raw
History Blame Contribute Delete
2.51 kB
// Doc Analyzer - PDF Rendering and Theme Toggle
// Theme toggle functionality
function initTheme() {
const savedTheme = localStorage.getItem('theme') || 'dark';
document.documentElement.setAttribute('data-theme', savedTheme);
const themeToggle = document.querySelector('.theme-toggle');
if (themeToggle) {
themeToggle.addEventListener('click', () => {
const currentTheme = document.documentElement.getAttribute('data-theme');
const newTheme = currentTheme === 'dark' ? 'light' : 'dark';
document.documentElement.setAttribute('data-theme', newTheme);
localStorage.setItem('theme', newTheme);
});
}
}
// PDF rendering functionality
async function renderPDF(pdfUrl, canvasId) {
const canvas = document.getElementById(canvasId);
if (!canvas) return;
const ctx = canvas.getContext('2d');
try {
// Load PDF.js from CDN
const pdfjsLib = await import('https://cdnjs.cloudflare.com/ajax/libs/pdf.js/3.11.174/pdf.min.mjs');
pdfjsLib.GlobalWorkerOptions.workerSrc = 'https://cdnjs.cloudflare.com/ajax/libs/pdf.js/3.11.174/pdf.worker.min.mjs';
// Load the PDF document
const loadingTask = pdfjsLib.getDocument(pdfUrl);
const pdf = await loadingTask.promise;
// Get first page
const page = await pdf.getPage(1);
// Calculate scale to fit canvas width
const viewport = page.getViewport({ scale: 1 });
const scale = canvas.width / viewport.width;
const scaledViewport = page.getViewport({ scale: scale });
// Set canvas dimensions
canvas.height = scaledViewport.height;
canvas.width = scaledViewport.width;
// Render page
const renderContext = {
canvasContext: ctx,
viewport: scaledViewport
};
await page.render(renderContext).promise;
} catch (error) {
console.error('Error rendering PDF:', error);
ctx.fillStyle = '#ef4444';
ctx.font = '16px Arial';
ctx.fillText('Error loading PDF', 10, 30);
}
}
// Initialize on page load
document.addEventListener('DOMContentLoaded', () => {
initTheme();
// Check for PDF to render
const pdfUrl = document.getElementById('pdf-url');
const canvasId = document.getElementById('canvas-id');
if (pdfUrl && canvasId) {
renderPDF(pdfUrl.value, canvasId.value);
}
});