pdfMake:使用系统字体

新手上路,请多包涵

我正在使用 pdfMake -library 在我的一个应用程序的客户端生成 PDF 文档。使用该库时我的主要问题是它依赖于虚拟文件系统中的可用字体。因此,字体在一个名为 vfs_fonts.js 的 JavaScript 文件中被发送到客户端,然后被加载到虚拟文件系统中,然后嵌入到生成的 PDF 文件中(当然只有整个字体的使用字符子集)。

在默认设置下,库使用 Roboto 字体,因此仅发送 800kb 多一点的字体。我的主要直觉是:

为什么不使用系统字体从而节省流量呢?

有没有办法让它使用系统字体?

我目前减少流量的方法是从 vfs_fonts.js 中删除我创建的文档中未使用的字体样式。例如,当仅使用常规样式时,我删除了斜体、粗体样式和斜体/粗体样式。使用这种方法,我至少能够将字体文件的大小减小 3/4。

原文由 snrlx 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

我也在使用 PDFmake,我遇到了类似的问题。

您必须通过相应的键添加任何新源,如下所示:

 pdfmake.fonts = {
   'Roboto' : {
      normal: 'Roboto-Regular.ttf',
      bold: 'Roboto-Medium.ttf',
      italics: 'Roboto-Italic.ttf',
      bolditalics: 'Roboto-Italic.ttf'
   },

   'OpenSans' : {
      normal: 'OpenSans-Regular.ttf',
      bold: 'OpenSans-Medium.ttf',
      italics: 'OpenSans-Italic.ttf',
      bolditalics: 'OpenSans-Italic.ttf'
   }

}

然后在 PDF 内容中,您必须添加要使用的“字体”。

 {
   stack : [
      {
         text : 'this is a test text',
         font  : 'OpenSans',
         italic : true
      }, {
         text : 'this is another test text',
         font : 'Roboto',
         bold : true
      }
   ]
}

我希望您发现它对于正在寻找解决方案的人来说是一个很好的解决方案。

来源在这里。 感谢 Daniel Arbiol ( Darbiol )。

原文由 Víctor Vanaclocha Cebrián 发布,翻译遵循 CC BY-SA 4.0 许可协议

正如 pdfMake 的主要维护者 bartekp 指出的那样,由于底层 pdfkit 库的限制,此功能目前无法实现。

因此,为了减小字体文件的大小,此时最好的选择可能是删除未使用的字体并为您的网络服务器使用 gzip 压缩。

原文由 snrlx 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏