2015-11-05 4 views
2

Как передать шаблон jsrender в jsreport?Использование jsrender для рендеринга и возврата pdf-файла из jsreport

Раздел содержимого jsreport требует html. Как я могу использовать этот шаблон в jsrender jsreport разделе контента

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')); 
}); 
+0

На самом деле узел узла узла-jsrender больше не нужен, поскольку jsrender сам является узловым модулем. См. Http://www.jsviews.com/#jsr-node-quickstart. Я обновил ваш код, чтобы напрямую использовать jsrender. – BorisMoore

+0

Работает с использованием var html = jsrender.renderFile ('./ personTemplate.html', {data: 'hello'}). Передано var html в содержимое jsreport. – krt

ответ

0

jsreport будет компилировать и сделать jsrender шаблон для вас. Вы можете передать строку шаблона в контент.

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

Если вы хотите скомпилировать и сделать шаблон по своему усмотрению, вы можете установить двигатель none и обеспечить окончательный HTML в content.

0

Как вы знаете, содержимое Jsreport является .html-файлом. Поэтому сначала вам нужно прочитать файл .html, используя код на стороне сервера, и передать это как содержимое для вашего jsreport.

Позвольте мне предположить, что вы используете C# в качестве вашей серверной части, а ваш файл content.html (template) находится в таком месте.

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 для получения дополнительной информации.