【问题标题】:Using jsrender to render and return a pdf-file from jsreport使用 jsrender 渲染并从 jsreport 返回一个 pdf 文件
【发布时间】:2015-11-05 13:28:07
【问题描述】:

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

【问题讨论】:

  • 事实上 node-jsrender 节点模块不再需要,因为 jsrender 本身就是一个节点模块。见jsviews.com/#jsr-node-quickstart。我更新了您的代码以直接使用 jsrender。
  • 使用 var html = jsrender.renderFile('./personTemplate.html', {data: 'hello'}) 工作。将 var html 传递给 jsreport 内容。

标签: node.js jsrender jsreport


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    如您所知,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 的文章了解更多信息。

    【讨论】:

      猜你喜欢
      • 2015-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-06
      • 1970-01-01
      • 1970-01-01
      • 2023-04-08
      • 1970-01-01
      相关资源
      最近更新 更多