【问题标题】:jsPDF-AutoTable- Is there any function to get the page count inside the `didParseCell` hookjsPDF-AutoTable-是否有任何函数可以获取`didParseCell`钩子内的页数
【发布时间】:2019-10-03 07:13:56
【问题描述】:

如果页数更多,我想添加总金额。

我正在使用didParseCell 在表格数据中添加总量及其工作,但我无法获得总页数,因此我可以设置任何条件

插件的git我也加了评论(https://github.com/simonbengtsson/jsPDF-AutoTable/issues/550)

我已经在 autoTable 的 didParseCell 中尝试了 doc.internal.getNumberOfPages()data.table.pageNumberdata.table.pageCount

所有页面数都为 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");

【问题讨论】:

  • 如果您只使用 jspdf,您能否进一步解决您的问题并检查您是否从 doc.internal.getNumber() 获得正确的值?即例如:let doc = new jsPDF(); doc.addPage(); console.log(doc.internal.getNumberOfPages())
  • 感谢您的回复。我已经更新了我的问题。我在 jsPDF 中使用类似这样的数据。
  • 您能否删除代码的 autoTable 部分,看看是否遇到同样的问题? (正如我之前的评论所建议的那样)。
  • 嘿@SimonBengtsson,我已经尝试过您的示例及其给出的页数2。我如何在我的代码中使用它,因为我必须使用autoTable。我有对象数组形式的数据。
  • 哦,我现在明白这个问题了。我没有看到你的 cmets,因为代码太多了。我会尝试回答。

标签: angular jspdf jspdf-autotable


【解决方案1】:

didParseCell 会立即被调用,这意味着您将始终从 getNumberOfPages 获得 1。做你想做的最简单的方法可能是在didParseCell 中添加行,然后修改willDrawCell 中的内容。

【讨论】:

  • 谢谢,它成功了。你是我唯一能得到快速回复的作者。你真的很棒
猜你喜欢
  • 1970-01-01
  • 2017-11-27
  • 2019-01-23
  • 1970-01-01
  • 2022-08-02
  • 2017-08-15
  • 2020-12-13
  • 2020-12-10
  • 2019-02-27
相关资源
最近更新 更多