Подогнать длинную таблицу или 2 страницы содержимого на 1 странице в pdfMake

Я пытаюсь сгенерировать PDF с помощью pdfMake с динамическим числом строк. Но иногда, если количество строк больше, оно автоматически переходит на вторую страницу.

 var po = $('.p-order').clone();
    var rows = [];
    var rspan = 0;
    var rOdinal = -1;
    var totalCols = 0;
    var width = [];
    var forRows = -1;
    var currRowIndex = -1;
    var targetColsSpan = -1;
    var PONo = $('#PONo').text();
    var isInterStateTax = $('#isInterStateTax').text();
    var processedby = $('#hdnProcessedBy').val();
    var verifiedby = $('#hdnVerifiedBy').val();
    $(po).find('tr').each(function () {
        var rw = $(this);
        if (!$(rw).hasClass('pdf-ignore')) {
            var columns = [];
            var cols = $(rw).find('td').length;
            var text = '';
            var fontsize = 7;
            var mar = 0;
            var align = 'center';
            currRowIndex++;

            for (var j = 0; j < cols; j++) {
                if (rOdinal == j && currRowIndex <= forRows) {
                    for (var i = 0; i < targetColsSpan; i++) {
                        columns.push({});
                    }
                    if (currRowIndex == forRows) {
                        rOdinal = -1;
                        targetColsSpan = -1;
                    }
                }
                var cspan = $($(rw).find('td')[j]).prop('colSpan');
                rspan = $($(rw).find('td')[j]).prop('rowSpan');
                if ($($(rw).find('td')[j]).data("empty") != null || $($(rw).find('td')[j]).data("empty") != undefined)
                    mar = 0;
                else
                    mar = 0;

                if ($($(rw).find('td')[j]).data("align") != null || $($(rw).find('td')[j]).data("align") != undefined)
                    align = $($(rw).find('td')[j]).data("align");
                else
                    align = 'center';

                text = $($(rw).find('td')[j]).find('span').text().trim();
                if (text == undefined || text == '') {
                    text = $($(rw).find('td')[j]).text().trim();
                    if (currRowIndex == 0)
                        fontsize = 11;
                }
                else {
                        fontsize = $($(rw).find('td')[j]).find('span').css('font-size');
                }
                if (fontsize == undefined)
                    fontsize = 7;

                if (text == undefined)
                    text = '';

                if (cspan != null && cspan > 1) {
                    if (rspan != null && rspan > 1) {
                        columns.push({
                            text: '' + text + '', fontSize: fontsize, margin: [0, mar, 0, mar], colSpan: '' + cspan + '', rowSpan: rspan, alignment: '' + align + ''
                        });
                        rOdinal = j;
                        forRows = rspan - 1;
                        targetColsSpan = cspan;
                    }
                    else
                        columns.push({ text: '' + text + '', fontSize: fontsize, margin: [0, mar, 0, mar], colSpan: '' + cspan + '', alignment: '' + align + '' });
                    for (var i = 1; i < cspan; i++) {
                        columns.push({});
                    }
                }
                else {
                    if (rspan != null && rspan > 1) {
                        columns.push({ text: '' + text + '', fontSize: fontsize, margin: [0, mar, 0, mar], rowSpan: rspan, alignment: '' + align + '' });
                        rOdinal = j;
                        forRows = rspan - 1;
                    }
                    else
                        columns.push({ text: '' + text + '', fontSize: fontsize, margin: [0, mar, 0, mar], alignment: '' + align + '' });
                }
            }

            if (cols > totalCols)
                totalCols = cols;
            if (cols > 0)
                rows.push(columns);

        }
    });
    var startAt = $('#startAt').text();
    var penul = $('#penul').text();
    var last = $('#last').text();

    if (rows.length >= 20 && rows.length <= 25) {
        columns = [];
        columns.push({ text: '', colSpan: isInterStateTax == 'true' ? 13 : 12, margin: [0, 70, 0, 0], border: [false, false, false, false] });

        if (isInterStateTax == 'true')
            columns.push({ text: '', margin: [0, 5, 0, 0] });
        columns.push({ text: '', margin: [0, 5, 0, 0] });
        columns.push({ text: '', margin: [0, 5, 0, 0] });
        columns.push({ text: '', margin: [0, 5, 0, 0] });
        columns.push({ text: '', margin: [0, 5, 0, 0] });
        columns.push({ text: '', margin: [0, 5, 0, 0] });
        columns.push({ text: '', margin: [0, 5, 0, 0] });
        columns.push({ text: '', margin: [0, 5, 0, 0] });
        columns.push({ text: '', margin: [0, 5, 0, 0] });
        columns.push({ text: '', margin: [0, 5, 0, 0] });
        columns.push({ text: '', margin: [0, 5, 0, 0] });
        columns.push({ text: '', margin: [0, 5, 0, 0] });
        rows.push(columns);
    }
    columns = [];



    columns.push({ text: startAt, fontSize: 7, margin: [0, 0, 0, 0], alignment: 'center' });
    columns.push({ text: penul, colSpan: isInterStateTax == 'true' ? 7 : 6, fontSize: 7, margin: [0, 0, 0, 0] });
    if (isInterStateTax == 'true')
        columns.push({ text: '' });
    columns.push({ text: '' });
    columns.push({ text: '' });
    columns.push({ text: '' });
    columns.push({ text: '' });
    columns.push({ text: '' });
    columns.push({ text: 'For Team' , colSpan: 5, rowSpan: 4, fontSize: 7, border: [true, true, true, false] });
    columns.push({ text: '' });
    columns.push({ text: '' });
    columns.push({ text: '' });
    columns.push({ text: '' });
    rows.push(columns);

    columns = [];
    columns.push({ text:  (parseInt(startAt) + 1).toString(), fontSize: 7, margin: [0, 0, 0, 0], alignment: 'center' });
    columns.push({ text: last, colSpan: isInterStateTax == 'true' ? 7 : 6, fontSize: 7, margin: [0, 0, 0, 0] });
    if (isInterStateTax == 'true')
        columns.push({ text: '' });
    columns.push({ text: '' });
    columns.push({ text: '' });
    columns.push({ text: '' });
    columns.push({ text: '' });
    columns.push({ text: '' });
    columns.push({ text: '' });
    columns.push({ text: '' });
    columns.push({ text: '' });
    columns.push({ text: '' });
    columns.push({ text: '' });
    rows.push(columns);


    var docDefinition = {
        pageSize: 'A4',

        content: [

                {
                    style: 'tableExample',
                    table: {
                        widths: width,
                        body: rows
                    }
                },
        ]
                            ,
        footer: function (currentPage, pageCount) { return { text: currentPage.toString() + ' of ' + pageCount, fontSize: 6, alignment: 'right', margin: [0, 0, 20, 40] } },
        styles: {
            tableExample: {
                margin: [20, 0, 20, 5]
            }
        },
        defaultStyle: {
            lineHeight: 1.2
        }
    };
    pdfMake.createPdf(docDefinition).download(PONo + '.pdf');

Я хочу, чтобы содержимое помещалось на одной странице. Мой контент никогда не выйдет за пределы страницы 2 и того, что я хочу на 1 странице. Это возможно с динамическим контентом. Пожалуйста, ведите меня.

0 ответов

Другие вопросы по тегам