// Web page capture script for DocuElevate browser extension // This script handles capturing web page content for PDF conversion /** * Capture the full page HTML with inline styles * @returns {Object} Page data with HTML, title, and URL */ function captureFullPage() { // Get all stylesheets and inline them const styles = Array.from(document.styleSheets) .map(sheet => { try { return Array.from(sheet.cssRules) .map(rule => rule.cssText) .join('\n'); } catch (e) { // Handle CORS issues with external stylesheets console.warn('Could not access stylesheet:', sheet.href, e); return ''; } }) .join('\n'); // Create a complete HTML document with inlined styles const styledHtml = ` ${document.title} ${document.body.innerHTML} `; return { html: styledHtml, title: document.title, url: window.location.href, timestamp: new Date().toISOString() }; } /** * Capture selected content from the page * @returns {Object} Selection data with HTML, text, and metadata */ function captureSelection() { const selection = window.getSelection(); if (!selection || selection.rangeCount === 0) { throw new Error('No content selected'); } const range = selection.getRangeAt(0); const container = document.createElement('div'); container.appendChild(range.cloneContents()); const html = ` ${document.title} - Selection

${document.title}

Source: ${window.location.href}


${container.innerHTML} `; return { html: html, text: selection.toString(), title: document.title + ' - Selection', url: window.location.href, timestamp: new Date().toISOString() }; } // Export functions for use in other scripts if (typeof module !== 'undefined' && module.exports) { module.exports = { captureFullPage, captureSelection }; }