如何将jsrender模板传递给jsreport?
jsreport内容部分需要html。如何在jsreport内容部分中使用该jsrender模板
var jsreport = require('jsreport');
// Require the jsrender node module
var jsrender = require('jsrender');
// Load a template
var tmpl = jsrender.templates('./personTemplate.html');
// Render
var html = tmpl.render({data: 'hello'});
// Generating PDF file using jsreport
jsreport.render({
template: {
content: ,
engine: "jsrender",
recipe: "phantom-pdf"
}
}).then(function(out){
out.stream.pipe(fs.createWriteStream('..//test.pdf'));
});
答案 0 :(得分:1)
jsreport将为您编译并呈现jsrender模板。您可以将模板字符串传递给内容。
jsreport.render({
template: {
//content: '{{:foo}}'
content: fs.readFileSync('personTemplate.html'),
engine: "jsrender",
recipe: "phantom-pdf",
data: { 'foo': 'hello' }
}
})
如果您想自己编译和渲染模板,可以将引擎设置为none
并向content
提供最终的html。
答案 1 :(得分:0)
如您所知,Jsreport的内容是.html文件。首先,您必须使用服务器端代码读取.html文件,并将其作为jsreport的内容传递。
我假设您使用c#作为服务器端,而您的content.html文件(模板)位于这样的位置。
string _contentPath = @"D:/WF/DemoApp/Templates/content.html";
现在让我们读取文件内容如下。
public string ReadContent()
{
return File.ReadAllText(_contentPath);
}
现在传递Jsreport中的内容,如下所示。
template: {
content: ReadContent(),
engine: "jsrender",
recipe: "phantom-pdf"
}
这就是我所做的,并修复了我项目中的类似问题。 进一步阅读有关Getting Started with JsReport的文章以获取更多信息。