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

时间:2017-01-13 19:06:54

标签: 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("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"
        });

以下是fiddle

2 个答案:

答案 0 :(得分:1)

提到here的解决方案对我有用。

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

let fontpath = (__dirname+'/../fonts/TimesNewRoman.ttf');
doc.font(fontpath);

键正在使用__dirname来定位路径。

其他参考: node.jsで帳票を作成する -pdfkitで請求書作成-

答案 1 :(得分:0)

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

https://stackoverflow.com/a/51026484/9598077