-1

好吧,为了达到我的目的,我需要使用支持 unicode 字符的字体从 jsPDF 生成 PDF。例如“€”符号,因为它在使用 jsPDF 内置字体时生成乱码,因为它不支持 unicode 字符。

然而好消息是你可以使用自定义的真实类型字体(ttf)并且很多 ttf 支持 unicode 字符,我上面的问题已经解决了。

现在坏消息或下一个副作用是在生成 pdf 之后,如果有人试图从 pdf 中复制确切的文本并想将其粘贴到其他地方,如文本文件、word 文档等,则会生成以下内容:

“ࣆࣆGROODUGROODUORWRIGROODUࣆࣆKDKDLDPULFK”

代替:

“€€欧元欧元很多欧元€€ - 哈哈我很有钱......”

我们使用 acrobat pdf 设置尝试了各种解决方法。没有什么特别有效。下载并尝试了很多不同的字体,但没有解决方案。

jspdf 版本是 1.4.1。

知道为什么会发生这种情况或对此有任何解决方案吗?

任何帮助将不胜感激。

谢谢。

4

2 回答 2

2

好吧,问题出在 jspdf 版本上。这个问题在 1.5.0 中解决了,我使用的版本是 1.4.1

查看发行说明: https ://github.com/MrRio/jsPDF/releases

移至:提交“c53beb6”:字体字典现在具有 toUnicode 条目,以便能够从 pdf 查看器中复制粘贴。

于 2020-02-19T16:21:50.680 回答
0

编辑:我试图重现你的问题。我使用 jsPDF 就像你使用 jsPDF 一样我让它工作得非常快。请告诉我这是否是你想要的。

这是一个工作示例代码笔

var doc = new jsPDF()

doc.text('€€Hello world!€€', 10, 10);

function save() {
    doc.save('a4.pdf');
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.5.3/jspdf.debug.js" integrity="sha384-NaWTHo/8YCBYJ59830LTz/P4aQZK1sS0SneOgAvhsIl3zBu8r9RevNg5lHCHAuQ/" crossorigin="anonymous"></script>
<button onclick="save()">Click me to download the PDF</button>


我首先建议您实现一个 cmap,但这太过分了,因为您需要重新映射每个字符,如此处所述使用 cmap 表实现一个cmap 表。

试试我上面的代码,我希望它有帮助,否则如果有进一步的问题,请告诉我。


请注意,创建的 PDF 中的文本也显示了欧元符号,因此这基本上可以解决您的问题

于 2020-02-13T12:27:04.917 回答