Chemistry Periodic Table Explorer

Atomic Mass: ${element.atomicMass || 'N/A'}

Category: ${elementCategories[element.category]?.name || element.category || 'N/A'}

Period: ${element.period || 'N/A'}

Group: ${ (element.atomicNumber >= 57 && element.atomicNumber <= 71) || (element.atomicNumber >= 89 && element.atomicNumber <= 103) ? 'N/A (Lanthanide/Actinide Series)' : (element.group || 'N/A') }

Electron Configuration: ${element.electronConfiguration || 'N/A'}

Density: ${element.density || 'N/A'}

Melting Point: ${element.meltingPoint || 'N/A'}

Boiling Point: ${element.boilingPoint || 'N/A'}

Year Discovered: ${element.yearDiscovered || 'N/A'}

`; if (element.summary) { detailsHTML += `

Summary: ${element.summary}

`; } detailsHTML += ``; elementDetailsDiv.innerHTML = detailsHTML; elementDetailsDiv.style.display = 'block'; const pdfButton = document.getElementById('pt-download-pdf-button'); if (pdfButton) { pdfButton.addEventListener('click', function () { generatePdf(element); }); } else { console.error("PDF Download button not found after rendering details."); } } function generatePdf(element) { if (typeof html2canvas === 'undefined' || typeof jspdf === 'undefined') { alert("PDF generation library not loaded. Please check your internet connection or script inclusions (ensure jsPDF and html2canvas CDNs are working)."); return; } if (!element) { alert("No element data to generate PDF."); return; } const { jsPDF } = jspdf; const pdf = new jsPDF('p', 'pt', 'a4'); const pdfContentDiv = document.createElement('div'); pdfContentDiv.style.padding = '30px'; // Increased padding for PDF look pdfContentDiv.style.fontFamily = 'Arial, sans-serif'; pdfContentDiv.style.fontSize = '10pt'; // Consistent font size for PDF pdfContentDiv.style.color = '#333333'; pdfContentDiv.style.backgroundColor = '#FFFFFF'; pdfContentDiv.style.width = '550px'; // A4 width approx in points, less margins let pdfHTML = `

${element.name} (${element.symbol})

Atomic Number: ${element.atomicNumber}

Atomic Mass${element.atomicMass || 'N/A'}
Category${elementCategories[element.category]?.name || element.category || 'N/A'}
Period${element.period || 'N/A'}
Group${ (element.atomicNumber >= 57 && element.atomicNumber <= 71) || (element.atomicNumber >= 89 && element.atomicNumber <= 103) ? 'N/A (Lanthanide/Actinide Series)' : (element.group || 'N/A') }
Electron Configuration${element.electronConfiguration || 'N/A'}
Density${element.density || 'N/A'}
Melting Point${element.meltingPoint || 'N/A'}
Boiling Point${element.boilingPoint || 'N/A'}
Year Discovered${element.yearDiscovered || 'N/A'}
`; if (element.summary) { pdfHTML += `

Summary

${element.summary}

`; } pdfContentDiv.innerHTML = pdfHTML; document.body.appendChild(pdfContentDiv); // Must be in DOM for html2canvas html2canvas(pdfContentDiv, { scale: 2, backgroundColor: '#FFFFFF', useCORS: true }).then(canvas => { document.body.removeChild(pdfContentDiv); const imgData = canvas.toDataURL('image/png'); const imgProps= pdf.getImageProperties(imgData); const pdfWidth = pdf.internal.pageSize.getWidth() - 60; // A4 width - margins const pdfHeight = (imgProps.height * pdfWidth) / imgProps.width; pdf.addImage(imgData, 'PNG', 30, 30, pdfWidth, pdfHeight); // Add with margins pdf.save(`${element.symbol}_${element.name}_details.pdf`); }).catch(err => { console.error("Error generating PDF with html2canvas:", err); if (document.body.contains(pdfContentDiv)) { document.body.removeChild(pdfContentDiv); } alert("Could not generate PDF. See console for details."); }); } if (!document.getElementById('chemistry-periodic-table-explorer-tool')) { console.error("Main tool container not found on DOM ready."); } });
Scroll to Top