2

如何将 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'));
});
4

2 回答 2

1

jsreport 将为您编译和渲染 jsrender 模板。您应该将模板字符串传递给内容。

jsreport.render({
        template: {
            //content: '{{:foo}}'
            content: fs.readFileSync('personTemplate.html'),                
            engine: "jsrender",
            recipe: "phantom-pdf",
            data: { 'foo': 'hello' }
        }
    })

如果您想自己编译和渲染模板,您可以将引擎设置为none并将最终的 html 提供给content.

于 2015-11-05T16:45:37.707 回答
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"
}

这就是我所做的并在我的项目中解决了类似的问题。进一步阅读有关JsReport 入门的文章以获取更多信息。

于 2016-04-25T11:55:30.617 回答