pdf - 带有自定义字体的dataTable pdf导出
问题描述
我正在尝试从 DataTable 导出 pdf 数据。我的表格内容是孟加拉语。导出后它只显示奇怪的字符。我尝试下载 vfs_fonts.js 并在其中包含“NikoshBAN.ttf”字体……但 pdf 仍然无法显示内容。
this.pdfMake.fonts = {
Nikosh: {
normal: 'public/fonts/NikoshBAN.ttf'
}
};
{
extend: 'pdf',
text: 'Export PDF',
exportOptions: {columns: ':visible'},
customize: function (doc) {
doc.defaultStyle.font = 'Nikosh';
},
}
任何人都可以向我展示使用自定义字体导出 dataTable pdf 的步骤吗?提前致谢
解决方案
我通过以下方式解决了这个问题:
- 我使用https://www.giftofspeed.com/base64-encoder/对我的NikoshBAN.ttf文件进行编码
- 从https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.53/vfs_fonts.js下载 vfs_fonts.js 文件并作为本地 .js 文件
- 然后将 NikoshBAN.ttf:"<encoded value from step 1" 添加到 vfs_fonts.js 文件中
- 现在在dataTable文件中使用如下:
pdfMake.fonts = {
Roboto: {
normal: 'Roboto-Regular.ttf',
bold: 'Roboto-Medium.ttf',
italics: 'Roboto-Italic.ttf',
bolditalics: 'Roboto-MediumItalic.ttf'
},
nikosh: {
normal: "NikoshBAN.ttf",
bold: "NikoshBAN.ttf",
italics: "NikoshBAN.ttf",
bolditalics: "NikoshBAN.ttf"
}
};
- 最后在 dataTable 按钮对象中,我使用如下:
buttons: [
'copy', 'csv', 'excel', 'print',
{
extend: 'pdf',
customize: function(doc) {
doc.defaultStyle.font = "nikosh";
}
}
]
现在它就像魅力一样!
推荐阅读
- javascript - 始终显示垫选择滚动条(Angular 5)
- clearcase - clearcase merge with beyond compare
- php - (PHP) 如何正确地将数组列表连接成 file_put_contents 的字符串?
- python - XAMPP 和 PyMySQL 未正确集成
- azure - 使用 Azure 逻辑应用访问 Always Encrypted 数据
- excel - 如何在每日列中分割两个日期之间的时间
- qt - Qt:在布局上设置渐变
- android - 迁移到 AndroidX - android.support.FILE_PROVIDER_PATHS 位置
- java - 将输入文本值传递给 DecimalFormat 时出错
- haskell-stack - `nix-env -i stack` 在 Mac OS X 上失败