生成的PDF没有包含在其Handlebars模板中的图像

时间:2018-11-13 22:40:01

标签: image express pdf-generation

app.get('/individual_report/:athlete_id', function(req, res) {
  database.select('*').from('participants').then(data => {
    if (data.length) {
      res.render('individual_report', {
        name: data
      });
      const hbsfile = fs.readFileSync(__dirname + '/../public/views/individual_report.hbs', 'utf8');
      const document = {
        template: hbsfile,
        context: {
          options: {
            dataForPDF: data,
            ssl_logo: '../public/static/assets/image/white_ssl_logo.png',
          },

    },
    path: __dirname + '/../public/reports/' + data[0].first_name + " " + data[0].last_name + '\'s scores.pdf'
  };
  pdf.create(document, options).then(res => {
    console.log(res)
  }).catch(error => {
    console.error(error)
  });
} else {
  res.json({
    msg: 'Invalid athlete ID'
  });
}
  }).catch(err => res.sendStatus(400));
});

以上节点快递路线呈现一个html页面,并使用HandleBars .hbs模板生成PDF。

<img class="ssl_logo" src="{{{options.ssl_logo}}}" alt="logo.png" width="120" height="50" />

这是我在.hbs文件中应该显示徽标图像文件的内容。

在浏览器和PDF文件中均未呈现图像。但是,alt属性在浏览器和PDF中呈现。我查看了控制台日志,并在source属性中发现了这个未知数:

img class =“ ssl_logo” src(未知)alt =“ logo.png” width =“ 120” height =“ 50”

我正在使用dynamic-html-pdf节点包来生成此报告,并且有人可以建议我做些可行的事情吗?谢谢。

2 个答案:

答案 0 :(得分:0)

欢迎,我要回答我的帖子。由于某种原因,这段代码没有读取本地图像文件,所以我所做的就是将图像上传到google驱动器,获取可共享的链接,google如何修改可共享的链接,因为生成的链接在我们的系统中不起作用代码,然后用链接替换图像文件地址。

希望这将对那些已经或将有此问题的人有所帮助。 (最终,您必须自己解决问题,晕眩)

答案 1 :(得分:0)

尝试使用文件协议

 ssl_logo: 'file://' + __dirname + '/public/static/assets/image/white_ssl_logo.png',

即使生成SVG图片也能正常工作