2016-07-29 201 views
4

我的任务是使用JavaScript将数据打印到pdf文件中。所以我选择了jsPdf来完成我的任务,并且也成功了。我的任务任务是将该打印任务转换为TypeScript。这里面临一个新问题Can't find name jsPdf in TypeScript我不知道这里的原因,因为在我的JavaScript中成功运行的代码在使用TypeScript运行时失败。我花了两天的时间寻找解决方案,但失败了。请参阅很多网站,但没有找到任何解决方案。有人能帮我解决这个问题吗?在TypeScript中找不到名称jsPdf

的index.html

<script src="common/jspdf.min.js"></script> 
 
<script src="common/jspdf.plugin.autotable.js"></script>

我的JS文件,

this.print=function(){ 
 
    { 
 
var columns = [" Data","StepData","CateData","CritiData","CheckyData"]; 
 
       
 
     
 
       var rows = []; 
 
       for (var i = 0 ; i<Data.length; i++) 
 
       { 
 
       \t 
 
        rows.push([ 
 
         
 
         Data[i], 
 
         StepData[i], 
 
         CateData[i], 
 
         CritiData[i], 
 
         CheckyData[i] 
 
         
 
        ]); 
 
       }; 
 
       
 
       var pdfsize='b2'; 
 
       var doc = new jsPDF('p', 'pt',pdfsize); 
 
     
 
       doc.autoTable(columns, rows, { 
 
       \t theme: 'grid', // 'striped', 'grid' or 'plain' 
 
       \t headerStyles: { 
 
         fillColor: [12, 234, 227], 
 
         textColor: [12, 1, 1] 
 
        }, 
 
       \t styles: { 
 
       \t  overflow: 'linebreak', 
 
       \t  columnWidth: 400 
 
       \t  }, 
 
       \t  beforePageContent: function(data) { 
 
       \t  \t 
 
       \t   doc.text("Process Name :"+mainData.name+" || "+"Description :"+mainData.description, 40, 30); 
 
       \t   
 
       \t  }, 
 
        columnStyles: { 
 
         1: {columnWidth: 60} 
 
        } 
 
        }); 
 

 
        doc.save(mainData.name+".pdf"); 
 
      } 
 
     };

每一件事情是好的,现在,但是问题出现了,当我搭售与类型的脚本代码

printData=(): any =>{ 
 
     { 
 
      
 
       let rows:any = []; 
 
       for (let i:any = 0 ; i<this.Data.length; i++) 
 
       { 
 
       \t 
 
        rows.push([ 
 
         
 
         this.Data[i], 
 
         this.StepData[i], 
 
         this.CateData[i], 
 
         this.CritiData[i], 
 
         this.FrequData[i] 
 
         
 
        ]); 
 
       }; 
 
       
 
       
 
       let pdfsize:any='b2'; 
 
       let doc :any= new jspdf('p', 'pt',pdfsize); //this line is having that error 
 
        
 
      
 
       doc.autoTable(columns, rows, { 
 
       \t theme: 'grid', 
 
       \t headerStyles: { 
 
         fillColor: [12, 234, 227], 
 
         textColor: [12, 1, 1] 
 
        }, 
 
       \t styles: { 
 
       \t  overflow: 'linebreak', 
 
       \t  columnWidth: 400 
 
       \t  }, 
 
       \t  beforePageContent: function(data) { 
 
\t \t \t \t \t \t \t 
 
       \t   doc.text("Process Name :"+procName+" || "+"Description :"+procDescription, 40, 30); 
 
       \t   
 
       \t  }, 
 
        columnStyles: { 
 
         1: {columnWidth: 60} 
 
        } 
 
        }); 
 

 
        doc.save(this.mainData.name+".pdf"); 
 
     } 
 
     };

新jsPdf()是由JavaScript接受,但是TypeScript说的是找不到名字jsPdf

+2

您是否尝试过在您的typescript文件的顶部(在printdata函数的上方)插入'declare var jsPDF;'。阅读更多[这里](http://blogs.microsoft.com/zh-cn/gilf/2013/07/22/quick-tip-typescript-declare-keyword/) –

回答

4

来自评论的建议:尝试在您的打字稿文件的顶部插入declare var jsPDF;(在printdata函数上方)。阅读更多:http://blogs.microsoft.co.il/gilf/2013/07/22/quick-tip-typescript-declare-keyword/

+0

嗨,我有另一个问题,如果可能看看那 - > http://stackoverflow.com/questions/38540921/getting-trouble-in-the-jspdf-auto-table-custom-width-columns –

+0

这是否解决了这个问题?哎呀,好像我错过了那一个。我现在来看看它。 –

相关问题