如何将图像插入pdf而不保存到文件中?

时间:2018-12-13 18:31:49

标签: node.js qr-code pdfmake

我正在使用pdfMake创建pdf并将其用作电子邮件附件。现在,我只想创建一个QR码并将其放置在新创建的pdf中。

我正在使用qr-image来生成QR码。

到目前为止,我可以创建pdf文件(使用SendGrid v3 API进行邮件传递)。

const docDefinition = {
    pageSize: 'A4',
    pageMargins: [40, 60, 40, 60],
    content: [
        'First paragraph',
        'Another paragraph, this time a little bit longer to make sure, this line will be divided into at least two lines',
        {
            image: qr.image(object.uid),
            width: 400
        },
    ]
};

let pdf;
pdfMake.createPdf(docDefinition).getBase64(function (encodedString) {
    pdf = encodedString;
    ...
    'attachments': [{
        'filename': 'attachment.pdf',
        'type': 'application/pdf',
        'content': pdf
    }],
    ...
}

我回来的错误是:

Error getting event document:  invalid image, images dictionary should contain dataURL entries (or local file paths in node.js)

如果我删除image属性并仅发送一些示例文本,则一切正常。所以我知道PDF正在生成,我只是没有正确设置QR图像。

如果可能,我不想保存图像-我想生成,附加和发送。

任何建议都将不胜感激!

1 个答案:

答案 0 :(得分:0)

希望这对其他人有帮助,这是我想出的办法。

const qr_svg = qr.imageSync(object.uid, { type: 'png' });
const qr_str = 'data:image/png;base64,' + qr_svg.toString('base64');

const docDefinition = {
    pageSize: 'A4',
    pageMargins: [40, 60, 40, 60],
    content: [
        'First paragraph',
        'Another paragraph, this time a little bit longer to make sure, this line will be divided into at least two lines',
        {
            image: qr_str,
            width: 400
        },
    ]
};

我实际上是错误地将图像传递给pdf。所有功劳归于Tim Krins