【发布时间】:2019-10-03 07:13:56
【问题描述】:
如果页数更多,我想添加总金额。
我正在使用didParseCell 在表格数据中添加总量及其工作,但我无法获得总页数,因此我可以设置任何条件
插件的git我也加了评论(https://github.com/simonbengtsson/jsPDF-AutoTable/issues/550)
我已经在 autoTable 的 didParseCell 中尝试了 doc.internal.getNumberOfPages()、data.table.pageNumber 和 data.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