none
Tabella con pagine non completamente esportata in PDF (pdfmake) RRS feed

  • 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



    mercoledì 2 febbraio 2022 08:36

Risposte

Tutte le risposte