pdfMake中的多种字体用于动态内容

时间:2017-03-09 09:44:36

标签: javascript jquery angularjs pdfmake

我正在使用 pdfMake ,将静态文本转换为pdf。

HTML中的文本来自AngularJS中的一项服务,并且是动态的。该文本可以包含英语和非英语字符,如韩语,日语,中文等。

目前,我只有英文字体,因此会为非英文字符打印空白

如何解决此问题?

JS 代码:

  self.downloadAsPdf = function (dateTimeId) {
      var datetime = document.getElementById(dateTimeId).innerHTML;
      pdfMake.fonts = {
        proximaNova: {
          normal: 'proximanova-regular.ttf',
          bold: 'Roboto-Medium.ttf',
          italics: 'proximanova-light.ttf',
          bolditalics: 'proximanova-semibold.ttf'
        }
      };
      var docDefinition = {
          { text: 'Heading', style: 'header' },
          { text: 'Subheading', style: 'myscript' },
          { text: datetime, style: 'datetime' },
          { text: model.storyScriptData.personalMoment, style: 'body' }, 
          { text: model.storyScriptData.createAConnection, style: 'body' },                
          { text: model.storyScriptData.theResoultion, style: 'body' }
        ],
        defaultStyle: {
          font: 'proximaNova'
        },
        styles: {
          header: {
            fontSize: 24,
            alignment: 'center',
            color: "#ffffff",
            margin: [0, 60, 0, 0]
          },
          myscript: {
            fontSize: 18,
            alignment: 'left',
            color: "#a7a7a7",
            margin: [0, 100, 0, 0]
          },
          datetime: {
            fontSize: 11,
            alignment: 'left',
            color: "#a7a7a7",
            margin: [0, 2, 0, 36]
          },
          body: {
            fontSize: 13,
            alignment: 'left',
            color: "#727272",
            lineHeight: 1.5,
            bolditalics: true
          }
        }
      }

      pdfMake.createPdf(docDefinition).download('optionalName.pdf');
    }

其中model.storyScriptData.personalMomentmodel.storyScriptData.createAConnectionmodel.storyScriptData.theResoultion是AngularJS中的model

1 个答案:

答案 0 :(得分:0)

假设您知道每次使用哪种语言,并且您可以在model.storyScriptData.currentLanguage的某个属性上从模型接收它。

你应该有一个类似于的对象:

var fonts = {
    english: 'english_font_name',
    japanese: 'japanese_font_name',
    chinese: 'chinese_font_name',
    korean: 'korean_font_name'
}

然后您可以为每种语言选择正确的字体:

    defaultStyle: {
      font: fonts[model.storyScriptData.currentLanguage]
    }

您可以在pdfMake实例中添加自定义字体,例如文档here。 另外,在response中对此有所不同。