如何在车把中使用自定义字体?

时间:2019-04-08 09:23:44

标签: javascript css handlebars.js

大家好,我很想在车把模板中获取自定义字体。

因此,我正在使用车把创建一个语句模板,然后在保存之前以pdf格式对其进行编译。我现在的问题是,字体永远不会在服务器上获取。如果在本地,一切都很好。

知道我在做什么错吗?我尝试了相对路径和绝对路径,但结果是相同的。

这是我的声明。html

<html>
  <head>
    <style type="text/css" media="screen, print">
      @font-face {
        font-family: "lato-regular";
        src: url("./src/services/templates/fonts/Lato/Lato-Regular.ttf")
          format("truetype");
      }
      @font-face {
        font-family: "lato-light";
        src: url("./src/services/templates/fonts/Lato/Lato-Light.ttf")
          format("truetype");
      }
      body {
        font-family: "lato-light";
        margin: 40px;
        font-size: 12px;
      }
    </style>
  </head>

  <body>
   ....
  </body
</html>

这是createStatement.js

const compile = async function(templateName, data) {
  const filePath = path.join(
    process.cwd(),
    "src/services/templates",
    `${templateName}.html`
  );
  const html = await fs.readFile(filePath, "utf-8");
  const templateScript = await hbs.compile(html);
  const res = templateScript(data);
  return res;
};

hbs.registerHelper("dateFormat", function(value, format) {
  return moment(value).format(format);
});

async function createStatement() {
  try {
    const content = await compile("statement", data);

    var options = { format: "A4" };

    pdf
      .create(content, options)
      .toFile("./src/services/template.pdf", function(err, res) {
        if (err) return console.log(err);
        console.log(res); // { filename: '/app/mypdf.pdf' }
      });
  } catch (error) {
    console.log(error);
  }
}

0 个答案:

没有答案