使用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入门的文章以获取更多信息。

    Interesting Posts