Si vous souhaitez imprimer seulement les vues de certaines lignes (= filtrer votre table), vous pouvez créer une colonne « Imprimer » de type booléen, et cocher les lignes que vous souhaitez enregistrer/imprimer.
Puis utiliser ce code dans le js, en remplaçant Imprimer par l’id de votre colonne booléen :
grist.ready({ requiredAccess: 'full' });
const printBtn = document.querySelector("#printBtn");
let tableData = [];
grist.onRecords(table => {
tableData = table;
});
printBtn.addEventListener('click', () => {
if (tableData.length === 0) {
alert("Aucune donnée à imprimer");
return;
}
// Filtrer uniquement les lignes où Imprimer est True
const rowsToPrint = tableData.filter(row => row.Imprimer === true);
if (rowsToPrint.length === 0) {
alert("Aucune ligne avec Envoyer = True");
return;
}
const printWindow = window.open('', '_blank');
let htmlContent = '<html><head><title>Impression</title></head><body>';
rowsToPrint.forEach((row) => {
htmlContent += row.formule_avec_style || '';
htmlContent += '<div style="page-break-after: always;"></div>';
});
htmlContent += '</body></html>';
printWindow.document.write(htmlContent);
printWindow.document.close();
printWindow.print();
});
Par contre, ce dont j’ai besoin ce serait de générer un pdf par ligne.
Je n’ai pas encore trouvé.
Enfin si avec html2pdf, mais cela créé des images, ce que je ne veux pas.