Principale utente con più risposte
Tabella con pagine non completamente esportata in PDF (pdfmake)

Domanda
-
Buongiorno a tutti.
Nella mia web application ho una tabella (footable) con pagine e barra di ricerca:
Vorrei esportare questa tabella (sono dei risultati di un'analisi) in PDF. Ho fatto varie prove, usando varie librerie, ma l'unica che sono riuscita ad utilizzare è pdfmake. Ho, quindi, la seguente funzione:
<script> function downloadPDFWithPDFMake() { var tableHeaderText = [...document.querySelectorAll('#mytable thead tr:not(.footable-filtering):not(.footable-paging) th')].map(thElement => ({ text: thElement.textContent, style: 'tableHeader' })); var tableRowCells = [...document.querySelectorAll('#mytable tbody tr td')].map(tdElement => ({ text: tdElement.textContent, style: 'tableData' })); var tableDataAsRows = tableRowCells.reduce((rows, cellData, index) => { if (index % 4 == 0) { rows.push([]); } rows[rows.length - 1].push(cellData); return rows; }, []); var docDefinition = { header: { text: 'REPORT USER RESULT', alignment: 'center' }, footer: function (currentPage, pageCount) { return ({ text: `Page ${currentPage} of ${pageCount}`, alignment: 'center' }); }, content: [ { style: 'tableExample', table: { dontBreakRows: true, headerRows: 1, body: [ tableHeaderText, ...tableDataAsRows, ] }, layout: { fillColor: function (rowIndex) { if (rowIndex === 0) { return '#0f4871'; } return (rowIndex % 2 === 0) ? '#f2f2f2' : null; } }, }, ], styles: { tableExample: { margin: [0, 20, 0, 80], }, tableHeader: { margin: 12, color: 'black', }, tableData: { margin: 12, }, }, }; pdfMake.createPdf(docDefinition).download('UserReport'); } document.querySelector('#pdfmake').addEventListener('click', downloadPDFWithPDFMake); </script>
Solo che cliccando sul button #pdfmake, ottengo un pdf con solo le prime 10 righe della tabella (ossia quelle di "pagina 1"). Io vorrei che sia esportata TUTTA la tabella in un doc UserReport.pdf. Come posso farlo? Cosa manca nella function? Ho provato anche ad inserire il carattere > nella querySelectioAll tra i "tag" thead tr th tbody ecc... ma nulla.
Ho googlato tutta la giornata di ieri e lunedì. Non sono proprio riuscita a trovare delle soluzioni che mi permettessero di esportare in pdf una tabella "paging" (ho usato il print() nativo, iTextSharp, .... senza ottenere risultati utili). L'unica soluzione che mi genera un pdf (incompleto ma) quasi decente è pdfmake.
Vi ringrazio anticipatamente e buona giornata
- Modificato nopatch4humancruelty mercoledì 2 febbraio 2022 08:37
Risposte
-
Ciao nopatch4humancruelty,
non puoi chiedere al server attraverso una richiesta HttpGet i dati che hai visualizzato in tabella ma senza l'impaginazione? In questo modo i dati non sono estrapolati dalla pagina ma chiesti direttamente al server.Ad esempio:
// Http GET con JQuery. Ottengo tutti i dati da stampare. $.get('/ControllerName/ActionName').done((response) => { // Logica di generazione del PDF });
- Modificato Gaetano Sblendorio mercoledì 2 febbraio 2022 10:03
- Proposto come risposta Yordan IvanovMicrosoft contingent staff, Moderator lunedì 14 febbraio 2022 09:43
- Contrassegnato come risposta Yordan IvanovMicrosoft contingent staff, Moderator lunedì 14 febbraio 2022 09:43
Tutte le risposte
-
Ciao nopatch4humancruelty,
non puoi chiedere al server attraverso una richiesta HttpGet i dati che hai visualizzato in tabella ma senza l'impaginazione? In questo modo i dati non sono estrapolati dalla pagina ma chiesti direttamente al server.Ad esempio:
// Http GET con JQuery. Ottengo tutti i dati da stampare. $.get('/ControllerName/ActionName').done((response) => { // Logica di generazione del PDF });
- Modificato Gaetano Sblendorio mercoledì 2 febbraio 2022 10:03
- Proposto come risposta Yordan IvanovMicrosoft contingent staff, Moderator lunedì 14 febbraio 2022 09:43
- Contrassegnato come risposta Yordan IvanovMicrosoft contingent staff, Moderator lunedì 14 febbraio 2022 09:43
-
Buongiorno nopatch4humancruelty,
Hai provato il consiglio di Gaetano?
Il problema c'e' ancora o invece e' risolto?• Microsoft offre questo servizio gratuitamente, per aiutare gli utenti e aumentare il database dei prodotti e delle tecnologie. Il contenuto fornito “as is“ non comporta alcuna responsabilità da parte dell’azienda.