Angular jspdf [atob] 自定义字体问题(希腊字符)

Angular jspdf [atob] problem with custom font (greek characters)

我尝试从 service 生成带有希腊字符的 pdf。 在我的本地机器上,它工作得很好。但在真实服务器上我收到错误

sPDF PubSub Error Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded. DOMException: Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.

.ttf 文件在服务文件夹中

我从我的组件调用这个函数。 服务代码是:

...//some imports

public printSomeData(data: any) {
    // getting data to the parse

      doc.addFileToVFS('Adria Slab W00 Medium.ttf')
      doc.addFont('Adria Slab W00 Medium.ttf', 'Adria Slab W00 Medium', 'normal')
      doc.setFont('Adria Slab W00 Medium', 'sans-serif')


      doc.setFontSize(data.fontSize)

      let body = []
      // generate body code

      autoTable(doc,{
        head: [head],
        body: body,
        tableLineColor: [189, 195, 199],
        tableLineWidth: 0.75,
        theme: 'grid',
        // headStyles: {co},
        bodyStyles: {lineColor: [0, 0, 0]},

        styles: {
          font: 'Adria Slab W00 Medium',    // <-- custom font
          fontStyle: 'normal',
          fontSize: data.fontSize,
          overflow: 'linebreak'
        },

      })

      doc.save('somename.pdf');

    }
  })
)

  }
  1. 从.ttf字体文件生成js文件(在线使用字体转换器)

  2. 在您的服务文件夹中创建font.ts文件

  3. export const fontString : string ="AAEAAA"; <-- 将生成文件中的所有字符串粘贴到此处

      import {fontString} from "./font";
      doc.addFileToVFS("AdriaSlabW00Medium.ttf", fontString);
      doc.addFont("AdriaSlabW00Medium.ttf", "Adria Slab W00 Medium", "normal");
      doc.setFont('Adria Slab W00 Medium', 'normal');