Node.js 使用jsrender从jsreport渲染并返回pdf文件
如何将jsrender模板传递给jsreport jsreport内容部分需要html。如何在jsreport内容部分使用该jsrender模板Node.js 使用jsrender从jsreport渲染并返回pdf文件,node.js,jsrender,jsreport,Node.js,Jsrender,Jsreport,如何将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
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'));
});
jsreport将为您编译和呈现jsrender模板。假设您将模板字符串传递给内容
jsreport.render({
template: {
//content: '{{:foo}}'
content: fs.readFileSync('personTemplate.html'),
engine: "jsrender",
recipe: "phantom-pdf",
data: { 'foo': 'hello' }
}
})
如果希望自己编译和呈现模板,可以将引擎设置为
none
,并为内容提供最终html,因为您知道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"
}
这就是我所做的,并修复了我的项目中类似的问题。
进一步阅读文章了解更多信息。事实上,不再需要节点jsrender节点模块,因为jsrender本身就是一个节点模块。看见我更新了您的代码以直接使用jsrender。使用var html=jsrender.renderFile('./personTemplate.html',{data:'hello'})进行工作。将var html传递给jsreport内容。