Javascript 无法使用pdfkit.js加载日文字体错误:不是受支持的字体格式或标准PDF字体

Javascript 无法使用pdfkit.js加载日文字体错误:不是受支持的字体格式或标准PDF字体,javascript,jquery,fonts,pdfkit,node-pdfkit,Javascript,Jquery,Fonts,Pdfkit,Node Pdfkit,请看小提琴的例子。我对使用pdf字体知之甚少。我正在使用pdfkit生成pdf。 我试图加载日文字体,但没有运气。我阅读了stackoverflow的大部分文章,但我没有成功地将日文文本写入pdf var doc = new PDFDocument(); var stream = doc.pipe(blobStream()); // draw some text doc.fontSize(25) .text("h

请看小提琴的例子。我对使用pdf字体知之甚少。我正在使用pdfkit生成pdf。 我试图加载日文字体,但没有运气。我阅读了stackoverflow的大部分文章,但我没有成功地将日文文本写入pdf

 var doc = new PDFDocument();
        var stream = doc.pipe(blobStream());      
        // draw some text
        doc.fontSize(25)
           .text("hello world", 100, 80);

            var oReq = new XMLHttpRequest();
        oReq.open("GET", "//fonts.gstatic.com/ea/mplus1p/v1/Mplus1p-Thin.ttf", true);
        oReq.responseType = "arraybuffer";

        oReq.onload = function (oEvent) {
            var arrayBuffer = oReq.response; // Note: not oReq.responseText
            if (arrayBuffer) {
                doc.registerFont('OpenSans', arrayBuffer)
                doc.fontSize(25);
                doc.font('OpenSans').text('こんにちは世界')
            }
        };

        oReq.send(null);

        // end and display the document in the iframe to the right
        doc.end();
        stream.on('finish', function () {
           document.getElementById('myiframe').src = stream.toBlobURL('application/pdf');
            console.log(stream.toBlobURL('application/pdf'))
             document.getElementById('spnmessage').innerText = "can't load the pdf in iframe in the jsfiddle. You can open the pdf through console"
        });

以下是

您可以在下面的链接中找到如何加载自定义unicode字体:

提到的解决方案对我很有效

基本上,我下载了日文字体。然后将它们放在我的nodejs项目中(例如,
/src/fonts
),在我的控制器中,我使用以下方法导入文件:

let fontpath=(_dirname+'/../fonts/TimesNewRoman.ttf');
文档字体(fontpath);
该键使用
\uuu dirname
来定位路径

附加参考:

有几件事-您的小提琴在Chrome中不起作用,您正在加载字体Mplus1p,但将其称为“OpenSAN”,并且您对
registerFont
的调用似乎没有遵循pdfkit文档中所说的您应该作为参数传递的内容。最后,你是否确保你加载的字体确实通过了正确的字体验证(使用或其他方式),因为你没有将其用作webfont,而是试图将其用作完全OpenType字体来进行排版。你们发现问题了吗?我在同一点被挡住了。