You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
38 lines
1.5 KiB
38 lines
1.5 KiB
// CDN jsPDF + autoTable pour export PDF |
|
document.addEventListener('DOMContentLoaded', function() { |
|
if (!window.jspdfLoaded) { |
|
const script1 = document.createElement('script'); |
|
script1.src = 'https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js'; |
|
script1.onload = function() { |
|
const script2 = document.createElement('script'); |
|
script2.src = 'https://cdnjs.cloudflare.com/ajax/libs/jspdf-autotable/3.8.2/jspdf.plugin.autotable.min.js'; |
|
script2.onload = function() { window.jspdfLoaded = true; }; |
|
document.body.appendChild(script2); |
|
}; |
|
document.body.appendChild(script1); |
|
} |
|
}); |
|
|
|
function exportTableToPDF() { |
|
if (!window.jspdfLoaded) { |
|
alert('Les librairies PDF ne sont pas encore chargées. Veuillez réessayer dans quelques secondes.'); |
|
return; |
|
} |
|
const { jsPDF } = window.jspdf; |
|
const doc = new jsPDF(); |
|
doc.text('Tableau des appréciations', 14, 14); |
|
const table = document.getElementById('appreciations-table'); |
|
const rows = Array.from(table.querySelectorAll('tbody tr')) |
|
.map(tr => [ |
|
tr.querySelector('.eleve')?.textContent.trim() || '', |
|
tr.querySelector('.appreciation')?.textContent.trim() || '' |
|
]); |
|
doc.autoTable({ |
|
head: [['Élève', 'Appréciation']], |
|
body: rows, |
|
startY: 20, |
|
styles: { fontSize: 10, cellWidth: 'wrap' }, |
|
headStyles: { fillColor: [55, 90, 127] } |
|
}); |
|
doc.save('appreciations.pdf'); |
|
}
|
|
|