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 に答える