简体   繁体   English

如何在Angular2 +中的autoTable jspdf条件下更改单元格的文本颜色

[英]How to change the text color of the cell on condition in autoTable jspdf in Angular2+

I want to change the text color to red and make it bold if the value of 'Target Data Type' and 'Data Type Verified' title columns are different using autoTable jspdf.如果使用 autoTable jspdf 的“目标数据类型”和“已验证数据类型”标题列的值不同,我想将文本颜色更改为红色并将其设为粗体。 I tried a code but its not working.我尝试了一个代码,但它不起作用。 I have written it in Angular2+.我已经用 Angular2+ 编写了它。

  capture() {

    var doc = new jspdf('l', 'pt', 'a4');

    var cols= [ { title: 'Target Data Type', dataKey: 'tdataType' },  { title: 'Source Field Name', dataKey: 'sourceFieldName' },
    { title: 'Data Type Verified', dataKey: 'datatypeVerified' }]

    var tableData =[];
    for(var i = 0 ; i <this.responseData.length; i ++){
      tableData.push(
       'tdataType': this.responseData[i].tdataType  , 
        'sourceFieldName' :this.responseData[i]. sourceFieldName  ,'datatypeVerified'  :this.responseData[i].datatypeVerified })
    }

    doc.autoTable(cols,tableData, {


      didParseCell: function(cell,data) {


          var tdElement;
          var tdElement2 ;
          if(cell.raw == 'Target Data Type'){

            tdElement = cell.raw.tdataType;
          }
          if ( cell.raw == 'Data Type Verified' ) {

            tdElement2 = cell.raw.datatypeVerified;


        }
        if(tdElement != tdElement2){
          cell.styles.textColor = [255,0,0];
          cell.styles.fontStyle = 'bold';
        }

    }

    })


     document.getElementById('obj').dataset.data = doc.output("datauristring");




      var blob = doc.output("blob");
      window.open(URL.createObjectURL(blob));

  }

I solved the query. 我解决了查询。 By Following this code - 按照此代码 -

  capture() {

    var doc = new jspdf('l', 'pt', 'a4');

    var cols= [{ title: 'Id', dataKey: 'id' },
    { title: 'Source-Field Resolved Path', dataKey: 'sourceName' },  { title: 'Target Data Type', dataKey: 'tdataType' }, 
    { title: 'Data Type Verified', dataKey: 'datatypeVerified' }]

    var tableData =[];
    for(var i = 0 ; i <this.responseData.length; i ++){
      tableData.push({'id':this.responseData[i].id, 'sourceName': this.responseData[i]. sourceName  ,'tdataType': this.responseData[i].tdataType  , 'datatypeVerified'  :this.responseData[i].datatypeVerified,'backgroundColor': this.responseData[i].backgroundColor })
    }
      doc.autoTable(cols,tableData, {

      didParseCell: function(cell,data) {

         console.log("Data = ", data)
         console.log("cell = ", cell)


          var tdElement;


            tdElement = cell.row.raw.backgroundColor

            console.log("tdElement = ", tdElement)
            if(tdElement == false && cell.column.raw.dataKey =="datatypeVerified" ){

              cell.cell.styles.fontStyle = 'bold';
              cell.cell.styles.textColor = [255,0,0]
            }


    }

    }

     document.getElementById('obj').dataset.data = doc.output("datauristring");


      var blob = doc.output("blob");
      window.open(URL.createObjectURL(blob));

  }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.3.5/jspdf.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf-autotable/2.3.2/jspdf.plugin.autotable.min.js"></script>
<button onclick="GeraPDF()">Gerar PDF</button>
function GeraPDF() {
  var doc = new jsPDF('p', 'pt');  
  doc.autoTable(['Nome','Sobrenome'], 
                [['Silvio', 'Santos']], {
    createdCell: function(cell, opts) {
      if (opts.column.index == 1) {        
        cell.styles.textColor = "#20a8d8";
        cell.styles.fillColor = "#000";
        console.log(cell.raw)
      }
    }
  });
  doc.save("tabela.pdf");
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM