某些UTF-8字符(土耳其语)在jsPDF中显示为HTML数值代码

问题描述 投票:0回答:1

我正在尝试使用jsPDF库创建一个包含土耳其语字符的PDF文件。在我进行任何更改之前,它都是这样创建PDF的:

Ğ”字符看起来为空,而“ Ö”字符显示为HTML数字代码,即Ö

此示例的代码:

var doc = new jsPDF(('p','pt','a4'));

doc.setFontType("bold");
doc.text(60, 28, 'Given name(s):');
doc.setFontType("normal");
doc.text(88, 28, 'OĞUZHAN');
doc.setFontType("bold");
doc.text(60, 32, 'Place and date of birth:');
doc.setFontType("normal");
doc.text(101, 32, 'KADIKÖY,');

doc.save('test.pdf');

然后,我选择一种具有土耳其语字符和.tff扩展名的字体。我使用开发人员创建的Font Converter进行了转换。

它给了我一个.js文件。在将文件和.tff文件包含到项目中之后,现在我看到的是最终的PDF:

Ğ”字符现在看起来不错,但是“ Ö”字符仍然看起来在Ö

我只是使用doc.setFont("timestr");更改字体:

var doc = new jsPDF(('p','pt','a4'));

doc.setFont("timestr");
doc.setFontType("bold");
doc.text(60, 28, 'Given name(s):');
doc.setFontType("normal");
doc.text(88, 28, 'OĞUZHAN');
doc.setFontType("bold");
doc.text(60, 32, 'Place and date of birth:');
doc.setFontType("normal");
doc.text(101, 32, 'KADIKÖY,');

doc.save('test.pdf');

当然,我包括转换器给我的.js文件:

<script src="/fonts/timestr-normal.js"></script>
<script src="/fonts/timestr-bold.js"></script>
<script src="/fonts/timestr-italic.js"></script>
<script src="/fonts/timestr-bolditalic.js"></script>

这些.js文件之一:

(function (jsPDFAPI) {
var font = 'AAEAAAAZAQA...'; // A very long string, I shorted it to show you
var callAddFont = function () {
this.addFileToVFS('timestr-normal.ttf', font);
this.addFont('timestr-normal.ttf', 'timestr', 'normal');
};
jsPDFAPI.events.push(['addFonts', callAddFont])
 })(jsPDF.API);

问题出在哪里?经过所有这些过程后,“ Ğ”字符看起来很正常很奇怪,但是“ Ö”字符看起来不正确,不是吗?

javascript jspdf
1个回答
0
投票

好的问题解决了:由于我使用的是C#,因此我从模态中获取了这些文本,因此不得不在Html.Raw()方法中使用它们。所以我这样写Html.Raw(@model.Name),它解决了问题。

© www.soinside.com 2019 - 2024. All rights reserved.