jsPDF-AutoTable - есть ли функция для подсчета количества страниц в хуке `didParseCell` - PullRequest
1 голос
/ 03 октября 2019

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

Я использую didParseCell, чтобы добавить общую сумму в данные таблицы и ее работу, но я не могу получить общее количество страниц, поэтому я могу поставить любое условие

У меня также естьдобавил комментарий к git плагина. (https://github.com/simonbengtsson/jsPDF-AutoTable/issues/550)

Я пробовал doc.internal.getNumberOfPages(), data.table.pageNumber и data.table.pageCount внутри didParseCell autoTable.

Всеколичество страниц выдачи 1

код

let doc     = new jsPDF({
      orientation: 'landscape',
      unit: 'pt'
    });

    let totalAmountRow = {column1:'Total Amount',column2:'INR',column2:'40'}

    doc.autoTable(headers, data, {
      startY:yPoint += 20,
      margin: {top: 100},
      theme: "grid",      
      didParseCell: function (data) {           
            console.log("Data getNumberOfPages",doc.internal.getNumberOfPages()) // Wrong page count here           
            console.log("Data Table PageCount",data.table.pageCount)
            console.log("data Table PageNumber",data.table.pageNumber)
            if(totalAmountRow != ''){
                data.table.settings.body.push(totalAmountRow);              
                totalAmountRow = '';
            }
      },
        didDrawCell: function (data) {
        doc.setFillColor(255, 255, 255);
      },
      columnStyles: {
        amount: {cellWidth: 60},
        "Demo Text": {cellWidth: 50}
      },
      didDrawPage: function (data) {
        let footerStr;
        let pageCount = doc.internal.getNumberOfPages(); // Here I am getting correct page count 
        if (typeof doc.putTotalPages === 'function') {
          footerStr = pageCount + " / " + totalPagesExp;
        }
        if(pageCount != 0) {
          doc.addImage('imgURL', 'JPEG', 35, 30);
          doc.setFontSize(14);
          doc.text('Title', 35, 80);
          yPoint = 300;
        }
        doc.setFontSize(10);
        doc.text(footerStr, 400, 590);        
      }
    });

    if (typeof doc.putTotalPages === 'function') {
      doc.putTotalPages(totalPagesExp);
    }
    doc.save("pdfName.pdf");

1 Ответ

1 голос
/ 04 октября 2019

didParseCell вызывается сразу, что означает, что вы всегда получите 1 из getNumberOfPages. Самый простой способ сделать то, что вы хотите, это, вероятно, добавить строку в didParseCell, а затем изменить содержимое в willDrawCell.

...