无法将 SVG 编译成 Handlebars HTML 模板

Cannot compile SVG into Handlebars HTML template

我正在后端编译 handlebars 模板以作为 HTML 电子邮件发送。我的一些消息需要包含服务器生成的 SVG - QRCodes。

我使用现有库制作了一个简单的 Handlebars 助手 - qrcode-svg。代码如下:

Handlebars.registerHelper('qrcode', (data) => {
  const svg = new QRCode({
    content: data,
    width: 90,
    height: 90,
    xmlDeclaration: false,
    join: true
  }).svg();
  return svg;
});

我正在使用的库独立运行良好。我的模板有如下片段:

            {{#each tickets}}
            <div style="...">
              <div style="...">
                {{{qrcode payload}}}
              </div>
              <div>{{title}}</div>
              <div>{{sequence}}</div>
            </div>
            {{/each}}

如果我使用 no-escape {{{...}}} 版本或在 Handlebars 选项中将 noEspace 设置为 true,我会在 HTML 电子邮件中收到一堆 <u></u>

如果我正常使用 {{qrcode payload}},我会做一个 svg,只是它是 "<svg.../>" 例如我的 svg 被双引号括起来,电子邮件无法正确呈现。我看到的不是 SVG,而是代表它的 HTML 代码。

我该怎么办?

你提到的 <u></u> 代码让我觉得你在 Gmail 的桌面网络邮件上检查过这个,它不支持 embedded SVG nor external SVG

如果您的图片是内容的重要组成部分,并且您希望大多数人都能看到它,请确保使用支持更好的格式,例如 JPG、GIF 或 PNG。

我最后做了别的事。分叉 node-svg 库并教它打印 HTML 表。如果有用,请随意 use/clone/fork 从 https://github.com/Diophant/qrcode-svg-table