使用jsrender从jsreport渲染并返回pdf文件

时间:2015-11-05 13:28:08

标签: 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.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'));
});

2 个答案:

答案 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的文章以获取更多信息。