jsPDF && jsPDF AutoTable 将特殊字符打印为 PDF
jsPDF && jsPDF AutoTable print spcial chars to PDF
我正在从我的 HTML table usimg jsPDF AutoTable 库创建 PDF 文件,一切正常,PDF 总是被创建,但我遇到了一些特殊字符的问题,这些字符对我来说很典型国家。在我的 PDF 文件中,包含这些字符的字符串在没有打印的情况下打印出来,而且看起来这个字符串中的每个字符都用 space 分隔。
我无法选择没有这些字符的方式,因为它们包含在例如名称中。我遇到问题的角色是例如 c with hook -> č。
下面我给你举个例子,在第 1、2、3 和 4 行的第一列中缺少带钩子的 c,然后用 space 分隔字符。
你不知道怎么解决吗?
如果有帮助,我来自捷克共和国(因为字符集)..
你的问题可能与jspdf不支持utf-8有关。在 issue. The spacing issue is also mentioned there. Another good option for generating pdf files is pdfmake 中关注有关它的更新。完全支持utf-8字符。
jsPDF在1.4.0版本发布后,终于支持编码变音符号了,但是很奇怪,imo。
- 找到包含您需要的字符的字体。假设它将是 Calibri。
- 转到
C:\Windows\Fonts\Calibri
并将 .ttf
字体文件复制到桌面。
- 转到 jsPDF FontConverter 和 select 复制的字体文件。单击 创建 按钮。
- 您应该得到 javascript 文件,其内容如下:
import { jsPDF } from "jspdf"
var font = 'AAEAAAAWAQQAAB...==';
var callAddFont = function () {
this.addFileToVFS('calibri-normal.ttf', font);
this.addFont('calibri-normal.ttf', 'calibri', 'normal');
};
jsPDF.API.events.push(['addFonts', callAddFont]);
this.addFont('calibri-normal.ttf', 'calibri', 'normal');
中的第二个字符串将是您的字体名称。记住了。
- 将下载的 javascript 文件添加到您的项目并将其导入:
import '../utils/calibri-normal';
- 转到初始化
jsPDF
对象并设置字体的地方:
const doc = new jsPDF('p', 'pt', 'a4');
doc.setFont("calibri"); // <-- place here your font name, which you remeber before
//...
doc.save('file001.pdf');
- 如果您使用 jsPDF Autotable 也将新字体添加到 autotable 设置:
doc.autoTable({
head: [['Column1', 'Column2', 'Column3']],
body: someDataRows,
styles: {
font: 'calibri', // <-- place name of your font here
fontStyle: 'normal',
},
margin: { bottom: 60 }
});
- 运行 您的代码生成的 PDF 应该包含您的字体和国家字符集。
我正在从我的 HTML table usimg jsPDF AutoTable 库创建 PDF 文件,一切正常,PDF 总是被创建,但我遇到了一些特殊字符的问题,这些字符对我来说很典型国家。在我的 PDF 文件中,包含这些字符的字符串在没有打印的情况下打印出来,而且看起来这个字符串中的每个字符都用 space 分隔。
我无法选择没有这些字符的方式,因为它们包含在例如名称中。我遇到问题的角色是例如 c with hook -> č。
下面我给你举个例子,在第 1、2、3 和 4 行的第一列中缺少带钩子的 c,然后用 space 分隔字符。
你不知道怎么解决吗?
如果有帮助,我来自捷克共和国(因为字符集)..
你的问题可能与jspdf不支持utf-8有关。在 issue. The spacing issue is also mentioned there. Another good option for generating pdf files is pdfmake 中关注有关它的更新。完全支持utf-8字符。
jsPDF在1.4.0版本发布后,终于支持编码变音符号了,但是很奇怪,imo。
- 找到包含您需要的字符的字体。假设它将是 Calibri。
- 转到
C:\Windows\Fonts\Calibri
并将.ttf
字体文件复制到桌面。 - 转到 jsPDF FontConverter 和 select 复制的字体文件。单击 创建 按钮。
- 您应该得到 javascript 文件,其内容如下:
import { jsPDF } from "jspdf"
var font = 'AAEAAAAWAQQAAB...==';
var callAddFont = function () {
this.addFileToVFS('calibri-normal.ttf', font);
this.addFont('calibri-normal.ttf', 'calibri', 'normal');
};
jsPDF.API.events.push(['addFonts', callAddFont]);
this.addFont('calibri-normal.ttf', 'calibri', 'normal');
中的第二个字符串将是您的字体名称。记住了。
- 将下载的 javascript 文件添加到您的项目并将其导入:
import '../utils/calibri-normal';
- 转到初始化
jsPDF
对象并设置字体的地方:
const doc = new jsPDF('p', 'pt', 'a4');
doc.setFont("calibri"); // <-- place here your font name, which you remeber before
//...
doc.save('file001.pdf');
- 如果您使用 jsPDF Autotable 也将新字体添加到 autotable 设置:
doc.autoTable({
head: [['Column1', 'Column2', 'Column3']],
body: someDataRows,
styles: {
font: 'calibri', // <-- place name of your font here
fontStyle: 'normal',
},
margin: { bottom: 60 }
});
- 运行 您的代码生成的 PDF 应该包含您的字体和国家字符集。