更改行背景颜色pdf导出dataTable

时间:2017-12-26 20:18:51

标签: jquery datatables

我需要检查列的值是否为负并且在导出为PDF时,如果是,则使整个单元格变为红色或文本装饰:直通。

但是我不知道如何访问元素来进行这样的修改。

我可以在浏览器中显示背景时修改背景,但在导出时不会以相同的方式工作。

我使用http://datatables.net/

    {
        extend: 'pdfHtml5',
        footer: true,
        text: 'PDF',
        header: true,
        title: t,
        orientation: 'landscape',
        exportOptions: {
            rows: function ( idx, data, node ) {
                //node.attributes.style = {background-color: "#000";};
                //console.log(node.attributes.style);
                //return true;
                // return data[2] === 'London' ?
                // true : false;
            }
        },
        customize: function(doc) {

            doc.content.splice( 1, 0, {
                margin: [ 0, 0, 0, 0 ],
                alignment: 'center',
                image: base64
            } );
            doc.defaultStyle.fontSize = 10;
            doc.pageMargins = [20,10,10,10];
            doc.styles.tableHeader.fontSize = 14;
            doc.styles.title.fontSize = 12;
            // Remove spaces around page title
            doc.content[0].text = doc.content[0].text.trim();
        } 

    },
    {
        extend: 'print',
        footer: true,
    }

    ],

    fnRowCallback: function( nRow, aData, iDisplayIndex, iDisplayIndexFull ) {
        var valor = aData[3].split('$');
        //console.log(teste);
        if (parseInt(valor[1])<0) { 
            $(nRow).css('background-color', '#e96464')
        }else{
            $(nRow).css('background-color', '#cdedc1')
        }
    }

});

1 个答案:

答案 0 :(得分:0)

我刚刚在DataTables forum中发布了一个类似问题的答案。解决方案是在自定义回调中修改PDF文档中的表。​​

buttons: [
  {
    extend: "pdfHtml5",
    customize: function(doc) {
      age = table.column(3).data().toArray();
      for (var i = 0; i < age.length; i++) {
        if (age[i] < 40) {
          doc.content[1].table.body[i+1][3].fillColor = 'blue';
        }
      }
    }
  }
]

在这里实时example