繁体   English   中英

jsPDF && jsPDF AutoTable 将特殊字符打印为 PDF

[英]jsPDF && jsPDF AutoTable print spcial chars to PDF

我正在从我的 HTML 表 usimg jsPDF AutoTable 库创建 PDF 文件,everythink 工作正常,总是创建 PDF,但我遇到了一些我所在国家/地区典型的特殊字符的问题。 在我的 PDF 文件中,包含这些字符的字符串在打印时没有使用它们,而且看起来这个字符串中的每个字符都用空格分隔。

我无法选择没有这个字符的方式,因为例如它们包含在名称中。 我遇到问题的字符是例如带有钩子的 c -> č。

下面我举个例子,在第 1、2、3 和 4 行的第一列中缺少带有钩子的 c,然后字符用空格分隔。

<a href="https://s3.postimg.io/cvm679ljn/table.png">没有c带钩子的表</a><br>

你不知道如何解决它吗?
如果有帮助的话,我来自捷克共和国(因为字符集)。

您的问题可能与 jspdf 不支持 utf-8 有关。 在此问题中关注有关它的更新。 那里也提到了间距问题。 生成 pdf 文件的另一个不错的选择是pdfmake 它完全支持 utf-8 字符。

在发布 1.4.0 版本后,jsPDF 最终支持编码变音符号字符,但以一种非常奇怪的方式,imo。

  1. 找到包含您需要的字符的字体。 假设这将是一个 Calibri。
  2. 转到C:\\Windows\\Fonts\\Calibri并将.ttf字体文件复制到桌面。
  3. 转到jsPDF FontConverter并选择复制的字体文件。 单击“创建”按钮。
  4. 你应该得到内容如下的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');的第二个字符串将是您的字体名称。 记住它。

  1. 将下载的 javascript 文件添加到您的项目中并导入: import '../utils/calibri-normal';
  2. 转到初始化jsPDF对象并设置字体的位置:

 const doc = new jsPDF('p', 'pt', 'a4'); doc.setFont("calibri"); // <-- place here your font name, which you remeber before //... doc.save('file001.pdf');

  1. 如果您使用 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 } });

  1. 运行您的代码 - 生成的 PDF 应包含您的带有国家字符集的字体。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM