Файл 'pdfmake / build / Roboto-Regular.ttf' не найден в виртуальной файловой системе при использовании двух языков (pdfMake) - PullRequest
0 голосов
/ 07 ноября 2019

Я хочу создать PDF-файл на английском и китайском языках, используя pdfMake на языке Ionic / Angular. Я использовал gulp для создания нового vfs_fonts.js и замены исходного в папке Build, а также поместил все файлы .ttf в одну папку Build. Он может выводить английский (но НЕ китайский), если я НЕ определю

pdfMake.fonts = {
   Roboto: {
     normal: XXXXX
      ..........
   },
   cwTeXQMing: {
     normal: XXXXX
     ..........
   }
};

Но как только я поставлю эти коды на место, он предупредит меня об ошибке «Файл» pdfmake / build / Roboto-Regular. TTF "не найден в виртуальной файловой системе" или "Файл" pdfmake / build / cwTeXOMing.ttf "не найден в виртуальной файловой системе". Я гуглю и ищу ТАК, но, похоже, эти решения не работают для меня. Пожалуйста, помогите.

import * as pdfMake from 'pdfmake/build/pdfmake.js'; // Could not find a declaration file for 
                                                     // module 'pdfmake/build/pdfmake.js'
import * as pdfFonts from 'pdfmake/build/vfs_fonts';
pdfMake.vfs = pdfFonts.pdfMake.vfs;

pdfMake.fonts = {
  Roboto: {
    normal: 'pdfmake/build/Roboto-Regular.ttf',
    bold: 'pdfmake/build/Roboto-Regular.ttf',
    italics: 'pdfmake/build/Roboto-Regular.ttf',
    bolditalics: 'pdfmake/build/Roboto-Regular.ttf'
  },
 cwTeXQMing: {
    normal: 'pdfmake/build/cwTeXQMingZH-Medium.ttf',
    bold: 'pdfmake/build/cwTeXQMingZH-Medium.ttf',
    italics: 'pdfmake/build/cwTeXQMingZH-Medium.ttf',
    bolditalics: 'pdfmake/build/cwTeXQMingZH-Medium.ttf'
 }
};


@Component({
selector: 'app-export',
templateUrl: './export.page.html',
styleUrls: ['./export.page.scss'],
})
export class ExportPage {

selectVersion = '';
pdfObj = null;

constructor() {}

async createPdf() {

if (this.selectVersion === 'Chinese') {
 const docDefinition = {
    pageSize: 'A4',
    font: 'cwTeXQMing',
    content: [
      {
        text: '通知我'
        , style: 'firstParagraph'
      }, 
   ],
    defaultStyle: {
      font: 'cwTeXQMing',
    },
    styles: {
      font: 'cwTeXQMing',  
      firstParagraph: {
        fontSize: 11,
      },
    }
   };
   this.pdfObj = pdfMake.createPdf(docDefinition);

} else {     // TO OUTPUT ENGLISH

 const docDefinition = {
    pageSize: 'A4',
    content: [
      {
        text: 'THIS IS ENGLISH PDF'
        , style: 'firstParagraph'
      }, 
   ],
    styles: {
      firstParagraph: {
        fontSize: 11,
      },
    }
   };
   this.pdfObj = pdfMake.createPdf(docDefinition);
}

1 Ответ

0 голосов
/ 09 ноября 2019

решаемая. Вместо "normal: 'pdfmake / build / Roboto-Regular.ttf'" просто введите имя файла "normal: 'Roboto-Regular.ttf'".

...