在Node.js中将HTML转换为PDF缓冲区

时间:2020-07-24 17:43:49

标签: node.js html-pdf

我正在尝试使用html-pdf包将此处“ returnDefaultOfferLetter”函数返回的HTML代码转换为PDF缓冲区(将用于发送邮件中的附件)。因此,问题在于它可以在localhost上运行,但在AWS Elastic beantalk服务器上会抛出ASSERTION ERROR。因此,经过一些研究,我知道需要指定phantomPath。我尽了一切努力,但没有任何解决办法。

在使用AWS的一周前,顺便说一句,所以不知道现在出了什么问题。帮助我找到解决方案,或向我建议将HTML转换为pdf BUFFER 的任何方法或软件包。 (请不要忽略缓冲区)

const htmlToBase64Pdf = (req, res) => {
    const promise = new Promise((resolve, reject) => {
        const offerLetterHTML = returnDefaultOfferLetter(req.body).toString(
            "utf8"
        );

        const pdfOptions = {
            format: "A3",
            phantomPath: "../../node_modules/phantomjs-prebuilt/bin/phantomjs",
        };

        pdf.create(offerLetterHTML, pdfOptions).toBuffer(function (
            err,
            buffer
        ) {
            if (err) {
                // console.log("err", err);
                reject(err);
            } else {
                // console.log("buffer", buffer);
                const base64Attachment = buffer.toString("base64");
                resolve(base64Attachment);
            }
        });
    });

    promise
        .then((resp) => res.send(resp))
        .catch((e) => {
            res.send(e);
        });
};

0 个答案:

没有答案