Aventuras de Zoe

// jsPDF addImage pode aceitar um objeto Image diretamente // O formato (JPEG/PNG) é geralmente inferido do objeto Image ou src, // mas especificar pode ajudar. Usaremos a extensão do src original. const format = img.src.toLowerCase().endsWith('.png') ? 'PNG' : 'JPEG'; //console.log(`Adicionando imagem ${i + 1} (${format}) ao PDF em [${x}, ${y}] com dimensão [${width}x${height}]`); pdf.addImage(img, format, x, y, width, height); //console.log(`Imagem ${i + 1} adicionada.`); } if(loadingMessage) loadingMessage.textContent = 'Salvando PDF...'; pdf.save('Aventuras-de-Zoe.pdf'); //console.log('Função pdf.save() chamada.'); } catch (error) { console.error('Erro ao gerar PDF:', error); if(loadingMessage) { loadingMessage.textContent = 'Erro ao gerar PDF!'; loadingMessage.style.color = 'red'; } const container = document.getElementById('imageBookContainer'); const errorDiv = document.createElement('div'); errorDiv.className = 'error-message'; errorDiv.textContent = `Erro ao gerar PDF: ${error.message}`; container.appendChild(errorDiv); } finally { downloadButton.textContent = originalText; downloadButton.disabled = false; if(loadingMessage) { setTimeout(() => { loadingMessage.style.display = 'none'; }, 2000); } //console.log('Processo de geração de PDF finalizado.'); } } // Inicialização: Carrega as imagens primeiro, depois habilita os botões document.addEventListener('DOMContentLoaded', async () => { // Desabilita o botão de download enquanto as imagens são carregadas document.getElementById('downloadAll').disabled = true; document.getElementById('printAll').disabled = true; // Carrega e exibe as imagens const loadedImages = await displayAndPreloadImages(); console.log(`Pré-carregamento de imagens concluído. ${loadedImages.length} imagens prontas.`); // Habilita os botões APENAS SE houver imagens carregadas if (loadedImages.length > 0) { document.getElementById('downloadAll').disabled = false; document.getElementById('printAll').disabled = false; console.log('Botões de Download/Imprimir habilitados.'); // Adiciona o listener de clique para gerar o PDF, passando as imagens carregadas document.getElementById('downloadAll').addEventListener('click', () => generatePDF(loadedImages)); // Listener para o botão de imprimir (imprime o HTML renderizado) document.getElementById('printAll').addEventListener('click', () => { window.print(); }); } else { console.error('Nenhuma imagem foi carregada com sucesso. Geração de PDF/Impressão desabilitada.'); const container = document.getElementById('imageBookContainer'); const errorDiv = document.createElement('div'); errorDiv.className = 'error-message'; errorDiv.textContent = 'Não foi possível carregar as imagens. A geração do PDF está desabilitada.'; container.appendChild(errorDiv); } // Proteções básicas (mantidas) document.addEventListener('copy', e => e.preventDefault()); document.addEventListener('contextmenu', e => e.preventDefault()); // Proteção de teclado (mantida e ajustada) document.addEventListener('keydown', function(e) { if (e.key === 'F12' || (e.ctrlKey && e.shiftKey && (e.key === 'I' || e.key === 'J')) || (e.ctrlKey && e.key === 'U')) { e.preventDefault(); //console.log('Ação de desenvolvedor desabilitada.'); } if (e.ctrlKey && e.key === 'p') { e.preventDefault(); //console.log('Atalho Ctrl+P desabilitado. Chamando window.print()...'); window.print(); } }); });