Download static/app.js from Leearg/doc-analyzer: direct link, hf CLI and curl.
- Browser
- Download file 2.51 kB
-
https://huggingface.co/Leearg/doc-analyzer/resolve/main/static/app.js
- Command line
-
hf download hf://Leearg/doc-analyzer/static/app.js
-
curl -L -o app.js https://huggingface.co/Leearg/doc-analyzer/resolve/main/static/app.js
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); | |
| } | |
| }); |