我正在使用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图像。
如果可能,我不想保存图像-我想生成,附加和发送。
任何建议都将不胜感激!
答案 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