`;
chatWindow.appendChild(messageEl);
chatWindow.scrollTop = chatWindow.scrollHeight;
};
const handleDownloadPdf = () => {
const pdfContentEl = document.getElementById('pdf-content');
if (!pdfContentEl) return;
document.getElementById('pdf-timestamp').textContent = new Date().toLocaleString('en-US');
document.getElementById('pdf-language-info').textContent = `Agent: ${agentLangSelect.value}, Customer: ${customerLangSelect.value}`;
document.getElementById('pdf-chat-list').innerHTML = chatHistory.map(msg => `
`).join('');
pdfContentEl.classList.remove('hidden');
html2canvas(pdfContentEl, { scale: 2 }).then(canvas => {
pdfContentEl.classList.add('hidden');
const imgData = canvas.toDataURL('image/png');
const pdf = new jsPDF({ orientation: 'portrait', unit: 'pt', format: 'a4' });
const pdfWidth = pdf.internal.pageSize.getWidth();
const margin = 40;
const imgWidth = pdfWidth - (margin * 2);
const imgHeight = (canvas.height * imgWidth) / canvas.width;
pdf.addImage(imgData, 'PNG', margin, margin, imgWidth, imgHeight);
pdf.save('chat-transcript.pdf');
}).catch(err => {
console.error("Error generating PDF:", err);
pdfContentEl.classList.add('hidden');
});
};
// --- Event Listeners ---
sendBtn.addEventListener('click', handleSendMessage);
messageInput.addEventListener('keydown', (e) => {
if (e.key === 'Enter' && !e.shiftKey) {
e.preventDefault();
handleSendMessage();
}
});
pdfBtn.addEventListener('click', handleDownloadPdf);
});
${msg.sender} (${msg.originalLang})
${msg.originalText}
Translation (${msg.translatedLang}): ${msg.translatedText}
