PDFKit - 自定义字体 - fs.readFileSync不是一个函数

djt*_*djt 7 javascript pdfkit node.js

我正在使用PDFKit作为应用程序.我只是在浏览器的HTML文件中使用它,使用Javascript(没有Node.js).

我从GitHub下载了PDFKit:https://github.com/devongovett/pdfkit/releases

以及Blob Stream:https://github.com/devongovett/blob-stream

我试图按照文档包含自定义字体,如下所示:

doc.registerFont('Custom Font', 'fonts/GOODDP__.TTF');
doc.font('Custom Font').fontSize(fontSize).text($("#text1").val(), xPos, yPos, configObj);
Run Code Online (Sandbox Code Playgroud)

但我总是得到这个错误:

 fs.readFileSync is not a function
Run Code Online (Sandbox Code Playgroud)

这是有道理的,因为它fs.readFileSync是node.js的一部分,我没有使用它.但是,文档中的示例说这可以在浏览器中使用.

我知道还有一个Browserify选项,但我不确定在这种情况下如何或如果有帮助

小智 6

你必须使用ArrayBuffer:

        var oReq = new XMLHttpRequest();
        oReq.open("GET", "css/fonts/Open_Sans/OpenSans-Regular.ttf", true);
        oReq.responseType = "arraybuffer";

        oReq.onload = function(oEvent) {
            var arrayBuffer = oReq.response; // Note: not oReq.responseText

            if (arrayBuffer) {
                PdfExporter.doc.registerFont('OpenSans', arrayBuffer)
            }
        };

        oReq.send(null);
Run Code Online (Sandbox Code Playgroud)


djt*_*djt 3

看来您必须使用 Browserify 来实现此功能,并且使用预编译的 PDFKit.js 不会削减任何 Node.js 特定功能。