如何使用jspdf / autotable在最后一页显示表格页脚?

问题描述

我对自动表有问题。我的桌子由脚,脚和脚组成。我的脚是每栏我的总价值。我能够生成pdf,但是英尺或总页脚仍在每页上打印。我在查看文档时使用showFoot: 'lastPage',但没有帮助。我不知道为什么我放的时候没有什么不同。

这是我的代码

$(document).on("click","#btnExportToPDF",function (e) { 
    e.preventDefault();
    var date = "as of "+(new Date()).toString().split(' ').splice(1,3).join(' ');
    $("#loading").show();

    var title = '12 Years Forecast';

    // === Calculate text width ====
    var text_width = $.fn.textWidth(title,'14px');
    var half_width = (text_width/2); //times pt unit


    var doc = new jsPDF('l','pt');
    var totalPagesExp = '{total_pages_count_string}'
    var base64Img = 'data:image/png;base64,;

    if (base64Img) {
        doc.addImage(base64Img,'JPEG',40,8,140,30,'MEDIUM')
    }

    doc.autoTable({
        html: '#year_table',startY: 50,didDrawPage: function (data) {
            var pageSize = doc.internal.pageSize

        },// pageBreak: 'avoid',bodyStyles: {
            fontSize: 8,halign: 'right',},headStyles: {
            fontSize: 10,halign: 'center'
        },});
    doc.autoTable({
        html: '#clients_table',startY: doc.lastAutoTable.finalY + 25,didDrawPage: function (data) {
            var pageSize = doc.internal.pageSize
          // Header
            doc.setFontSize(14)
            doc.setTextColor(40)
            doc.setFontStyle('bold')
            doc.text(title,(doc.internal.pageSize.getWidth()/2)-half_width,22)
            doc.setFontSize(10)
            doc.setTextColor(150);
            doc.setFontStyle('nomal')
            doc.text(date,(doc.internal.pageSize.getWidth()/2)-42,33)

              // Footer
            var str = 'Page ' + doc.internal.getNumberOfPages()
              // Total page number plugin only available in jspdf v1.0+
            if (typeof doc.putTotalPages === 'function') {
                str = str + ' of ' + totalPagesExp
            }
            doc.setFontSize(10)
            doc.setTextColor(150);
              // jsPDF 1.4+ uses getWidth,<1.4 uses .width
            var pageHeight = pageSize.height ? pageSize.height : pageSize.getHeight()
              doc.text(str,pageHeight - 10)
        },company: {
                halign: 'left',}
        },columnStyles: {
            0: {
                halign : 'left',textColor: [28,126,214],footStyles:{
            fontSize: 10,halign: 'right'
        },drawCell: function(cell,data) {
            if (data.table.rows.length  === 0 || data.table.rows.length - 1) {
              cell.styles.setFontStyle = 'bold';
            }
          },showFoot: 'lastPage',});
        // Total page number plugin only available in jspdf v1.0+
    if (typeof doc.putTotalPages === 'function') {
        doc.putTotalPages(totalPagesExp)
    }
    doc.save("reports.pdf")
    $("#loading").hide();
});

希望有人可以帮助我。我找不到任何有关此的文档或论坛。谢谢。

解决方法

您使用的 showFoot 指令引用了表格中的标签。

要添加页码,我这样做了:

  /* Per https://newbedev.com/adding-footer-to-pdf-using-jspdf */
  addFooters = doc => {
    console.log("Adding footers...");
    const pageCount = doc.internal.getNumberOfPages()

    doc.setFont('helvetica','italic')
    doc.setFontSize(8)
    for (var i = 1; i <= pageCount; i++) {
      doc.setPage(i)
      doc.text('Page ' + String(i) + ' of ' + String(pageCount),doc.internal.pageSize.width - 10,doc.internal.pageSize.height - 10,{ align: 'right' })
    }

这会将页码放在右下角。

然后在我的 doc.save() 命令之前,我有这个:

// Inject (headers and) footers
//this.addHeaders(doc);   
this.addFooters(doc);

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...