2015-11-03 55 views
3

我试图将HTML转换为pdf时遇到了奇怪的错误使用jsPDF-AutoTable插件。根据official Github page,可以通过使用createdHeaderCellcreatedCell挂钩来自定义任何headerCell和普通单元。我使用下面的代码来更改特定标题和行单元格的样式(Name标题和Jack单元格)。我也上传这个代码here如何使用jsPDF-AutoTable插件在PDF中自定义页眉单元格?

$('#btn').click(function(){ 

      var columns = ['ID','Name','Address','Age']; 
      var rows = [ 
      [1,'John','Vilnius',22], 
      [2,'Jack','Riga',25] 
      ]; 

      var doc = new jsPDF('p', 'pt'); 

      doc.setFontSize(20); 
      doc.text(30, 30, 'Table'); 

      doc.autoTable(columns, rows, { 
       margin: { top: 50, left: 20, right: 20, bottom: 0 }, 
       createdHeaderCell: function (cell, data) { 
        if (cell.raw === 'Name') { 
         cell.styles.fontSize= 15; 
         cell.styles.textColor = 111; 
        } else {//else rule for drawHeaderCell hook 
         cell.styles.textColor = 255; 
         cell.styles.fontSize = 10; 

        } 
       }, 
        createdCell: function (cell, data) { 
        if (cell.raw === 'Jack') { 
         cell.styles.fontSize= 15; 
         cell.styles.textColor = 111; 
        } 
       } 
      }); 

      doc.save('output.pdf'); 
}); 

在这段代码createdCell钩按预期工作和风格Jack细胞,但没有发生为Name头。我错过了什么,或者它是一个错误?发生下一Address

,我觉得用drawHeaderCell代替createdHeaderCell奇怪的解决方法,但在这种情况下,造型有趣的事情,而不是Name因为我想。我的解决方法:我以前使用ID标题风格Name,但这种解决方案不是很漂亮,因为我应该使用else规则进行造型,否则造型将适用于ID之后的所有标头,而不仅仅是Name,所以我想了解一下我的初始代码是错误的。

谢谢你的关注。

回答

2

由于没有人回答我使用我的解决方案解决方案使用drawHeaderCell挂钩代码如下。我在很多表上测试过它,它工作正常(在生产中,我使用动态生成的表具有不同的标题)。唯一的缺点是你不能改变第一个标题的颜色,但希望我不需要这样做。

$('#btn').click(function(){ 

      var columns = ['ID','Name','Address','Age']; 
      var rows = [ 
      [1,'John','Vilnius',22], 
      [2,'Jack','Riga',25] 
      ]; 

      var doc = new jsPDF('p', 'pt'); 

      doc.setFontSize(20); 
      doc.text(30, 30, 'Table'); 

      doc.autoTable(columns, rows, { 
       margin: { top: 50, left: 20, right: 20, bottom: 0 }, 
       drawHeaderCell: function (cell, data) { 
        if (cell.raw === 'ID') {//paint.Name header red 
         cell.styles.fontSize= 15; 
         cell.styles.textColor = [255,0,0]; 
        } else { 
         cell.styles.textColor = 255; 
         cell.styles.fontSize = 10; 

        } 
       }, 
        createdCell: function (cell, data) { 
        if (cell.raw === 'Jack') { 
         cell.styles.fontSize= 15; 
         cell.styles.textColor = [255,0,0]; 
        } 
       } 
      }); 

      doc.save('output.pdf'); 
}); 
相关问题