使用jsrender从jsreport渲染并返回pdf文件
如何将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')); });
jsreport将为您编译并呈现jsrender模板。 您假设将模板string传递给内容。
jsreport.render({ template: { //content: '{{:foo}}' content: fs.readFileSync('personTemplate.html'), engine: "jsrender", recipe: "phantom-pdf", data: { 'foo': 'hello' } } })
如果你想自己编译和渲染模板,可以将引擎设置为none
并为content
提供最终的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" }
这是我所做的,并解决了我的项目中的类似问题。 进一步阅读有关JsReport入门的文章以获取更多信息。