javascript - 无法使用 ejs.renderfile 正确渲染图像
问题描述
我正在尝试从渲染的 ejs 文件创建 pdf,但无论我如何尝试都无法正确渲染图像。
我的 app.js :
let express = require("express");
let app = express();
let ejs = require("ejs");
let pdf = require("html-pdf");
let path = require("path");
app.use( express.static( "public" ) );
app.get("/generateReport", (req, res) => {
ejs.renderFile("./views/report-template.ejs", (err, data) => {
if (err) {
res.send(err);
} else {
pdf.create(data).toFile("certificate.pdf", function (err, data) {
if (err) {
res.send(err);
} else {
res.send("File created successfully");
}
});
}
});
})
app.listen(3000, function(){
console.log('Server listening on port 3000');
});
----------
我的报告模板.ejs 文件
<html>
<body>
<img src="certificate.jpg" width=675 height=792>
</body>
</html>
我已经将certified.jpg 保存在所有位置,包括root、public 等。但它不起作用..请帮助..我是编码和节点的新手。
解决方案
这对我有用,选项 pdf //base 中的参数“base”:${req.protocol}://${req.get('host')}
var options = {
"format": "A4",
"orientation": "portrait",
base: `${req.protocol}://${req.get('host')}`,
};
pdf.create(resulthtml, options).toStream(function(err, stream) {
if (err) res.end('An error occurred on create pdf');
res.setHeader('Content-disposition', 'inline; filename="' + stream.filename + '"');
res.setHeader('Content-type', 'application/pdf');
stream.pipe(res);
});
然后现在在模板中
<img src="/public/image.png">
或者干脆
<img src="image.png">
推荐阅读
- database - Clickhouse - 添加一个新列,默认值基于另一列
- c++ - “此库现在需要 C++11 或更高版本的编译器...”在编译 boost 库的“number_base.hpp”时
- javascript - 如何在jQuery的依赖下拉列表中获取选定的值?
- ios - iOS 15 中的 CoreData + CloudKit 编译问题
- magento2 - 我的 Magento 2 产品网格显示原始 HTML 代码。需要关于 Ui 组件的帮助
- swift - 如何在 Swift 中分配 UUID?
- javascript - 用多个守卫保护一条 Vue 路由
- spring - 如果至少存在一个属性,则 Spring Conditional 尝试实例化
- javascript - 如何从 Javascript 中的 JSON 格式获取对象 ID
- apache-spark - 使用 SparkSession 读取、过滤和计算 CSV 文件的行数时如何处理 NullPointerException?