【问题标题】:Cannot compile SVG into Handlebars HTML template无法将 SVG 编译为 Handlebars HTML 模板
【发布时间】:2020-10-28 06:18:04
【问题描述】:

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

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

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 电子邮件中收到一堆 &lt;u&gt;&lt;/u&gt;

如果我正常使用{{qrcode payload}},我会做一个svg,只有"&lt;svg.../&gt;",例如我的 svg 被双引号包围,并且电子邮件无法正确呈现。我看到的不是 SVG,而是代表它的 HTML 代码。

我该怎么办?

【问题讨论】:

  • the email does not render correctly 你在哪里看渲染的 HTML?
  • gmail。它强制嵌入样式,但 SVG 应该仍然可以工作,对吧?
  • caniemail.com/features/html-svg。传统上,对 SVG 的电子邮件支持从未如此出色。

标签: javascript svg handlebars.js html-email


【解决方案1】:

你提到的&lt;u&gt;&lt;/u&gt; 代码让我觉得你在 Gmail 的桌面网络邮件上检查了这个,它既不支持 embedded SVG 也不支持 external SVG

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

【讨论】:

    【解决方案2】:

    我最终做了其他事情。分叉 node-svg 库并教它打印 HTML 表格。如果有用,请随时从https://github.com/Diophant/qrcode-svg-table 使用/克隆/分叉它

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-17
      • 2013-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-14
      • 2017-08-02
      相关资源
      最近更新 更多