首页 > 解决方案 > 将 Angular 项目更新为 10 后出现 jsPDF 错误

问题描述

我更新了 Angular 项目,现在我收到了这个错误:

Argument of type '82' is not assignable to parameter of type 'string | string[]'.ts(2345)

这是评论 //HEADER TEXT 和 doc.text() 第一个数字的地方,我认为它想要字符串作为第一个参数,但我有以前版本的数字?我以前有过这样的,它正在工作..我该如何解决这个问题?

首先,我重命名了输入,因为它抛出了错误,即它不能从此导入 * as jsPDF from 'jspdf' 构建;

我将它重命名为从'jspdf'导入jsPDF;

然后这个错误被修复了,现在出现了字符串错误。

这是代码:

 onPdf(){
    let doc = new jsPDF('p', 'mm', 'a4');
    let itmH: number = 18;                            //height of rectangles
    let headerH: number = 14;                         //height of header
    let offH: number = 2                              //offset of rectangles
    let offsetX:number = 10;
    let offsetY:number = 10;
    let maxWidth:number = 210 - 2*offsetX;
    let pageNumber:number = 1;
    doc.addPage();
    doc.addPage();
    
    // HEADER - rectangle + lines
    doc.setPage(1);
    doc.rect(offsetX,offsetY,maxWidth,headerH);
    doc.line(55,10,55,24); 
    doc.line(145,10,145,24);
    doc.line(55,17,145,17);

    // HEADER TEXT
    doc.setFontSize(12);
    doc.text(82,15.5,'Bericht ' + this.oeeDb.branch);
    doc.text(68,22.5, this.oeeDb.datum + ' Tagesreport ' + this.produkt);
    doc.text(160,19, 'BE.11402.ADM');

    //RIADKOVANIE
    let stp:number = itmH + offH;
    let curP:number = offsetY + headerH + offH;
    let greenX:number = 55
    
    for (let i =0;i < this.dbItems.length;i++){
      // RECTANGLES
      doc.rect(offsetX,curP,maxWidth,itmH);
      doc.setFillColor(0, 66, 54);
      doc.rect(greenX, curP, 8, itmH, 'F');
      
      // DESCRIPTION
      doc.setFontSize(10);
      let desc = this.dbItems[i].description;
      if (desc.length < 26){
        let xAx = offsetX + 2 + Math.round((25-desc.length)*41/50);
        doc.text(desc,xAx,curP+11);
      } else {
        let ind: number = 0;
        let arrStr = desc.split(/[ ,]+/).filter(Boolean);
        let strToTxt = '';
        for (let k = 0; k < arrStr.length;k++){
          if (k > 0){
            if (strToTxt.length + arrStr[k].length > 24){
              let xAx = offsetX + 2 + Math.round((25-strToTxt.length)*41/50);
              doc.text(strToTxt,xAx,curP+8+(ind*5));
              ind++;
              strToTxt = arrStr[k];
            } else {
              strToTxt += ' ' + arrStr[k];
            }
          } else {
            strToTxt = arrStr[k];
          }
          if (k === arrStr.length - 1 && strToTxt.length>0){
            let xAx = offsetX + 2 + Math.round((25-strToTxt.length)*41/50);
            doc.text(strToTxt,xAx,curP+8+(ind*5));
            strToTxt = '';
          }
        }
      };
      
      // print RESULT
      let rslt = this.getResult(i);
      let xAx = greenX + 2 + 8 + Math.round((32-rslt.length)*60/64);
      doc.text(rslt,xAx,curP+12);

      let result:string;
      if ( i === 0){
        if(this.oeeDb.results[i] > this.dbItems[i].criteria[0]) {
          result = 'red';
        } else {
          result = 'green';
        }
      } else {
        if (this.dbItems[i].type === 'low'){
          if (this.oeeDb.results[i] > this.dbItems[i].criteria[0]){
            result = 'red';
          } else if (this.oeeDb.results[i] > this.dbItems[i].criteria[1]){
            result = 'yellow';
          } else {
            result = 'green';
          }
        } else {
          if (this.oeeDb.results[i] < this.dbItems[i].criteria[0]){
            result = 'red';
          } else if (this.oeeDb.results[i] < this.dbItems[i].criteria[1]){
            result = 'yellow';
          } else {
            result = 'green';
          }
        }
      }
      
      
      //trafficlights
      for (let j =0 ;j < 3; j++){
        if (result === 'red' && (j === 0 || i === 0)){
          doc.setFillColor(255, 0, 0);
        } else if (result === 'yellow' && j === 1) {
          doc.setFillColor(255,255,0);
        } else if (result === 'green' && (j === 2 || i === 0)){
          doc.setFillColor(0,128,0);
        } else {
          doc.setFillColor(0, 0, 0);
        }
        doc.circle(greenX+4,curP+ (j*6)+3, 2.5, 'F')

        // LEGEND
        if (j === 0) {
          doc.setFillColor(255,0,0);
        } else if (j===1) {
          doc.setFillColor(255,255,0);
        } else {
          doc.setFillColor(0,128,0);
        }
        if (i > 0){
          doc.circle(125,curP+ (j*5)+4, 2, 'FD');
        }
        
        if (j==0 || i > 0) {
          doc.setFontSize(10);
          doc.text(128,curP+ (j*5)+5, this.dbItems[i].legend[j]);
        }

我应该从这个替换它:

doc.text(82, 15.5, 'Bericht ' + this.oeeDb.branch);
doc.text(68, 22.5, this.oeeDb.datum + ' Tagesreport ' + this.produkt);
doc.text(160, 19, 'BE.11402.ADM');

在所有情况下都这样做?:

doc.text('Bericht ' + this.oeeDb.branch, 82, 15.5);
doc.text(this.oeeDb.datum + ' Tagesreport ' + this.produkt, 68, 22.5);
doc.text('BE.11402.ADM', 160, 19);

标签: typescriptjspdf

解决方案


推荐阅读