如何从js文件中分离html并显示内容?

时间:2015-10-06 11:24:23

标签: javascript html node.js

我有一个代码如下:

var info = {
    "Company": "ABC",
    "Team": "JsonNode",
    "Number": 4,
    "Time": "1 day"
};

var layout = "<ol><li>Info: </li><ol><ul>Company:       {{info.Company}}</ul><ul>Team: {{info.Team}}</ul></ol><li>Number: {{info.Number}}</li><li>Time: {{info.Time}}</li><ol>";

function generatePdf(layout,info) 
{
    var wkhtmltopdf = require('wkhtmltopdf');
    console.log('generating pdf');
    wkhtmltopdf(layout, {
       //console.log('debug');
       output: './file.pdf',
       "viewport-size": "1280x1024",
       "page-width": "400",
       "page-height": "600"
    });
}
generatePdf(layout,info); 

现在我可以生成pdf文件,但pdf文件的内容不对。是:

    1. Info:
    Company: {{info.Company}}

    Team: {{info.Team}}
    2. Number: {{info.Number}}
    3. Time: {{info.Time}}

我的问题是:

1:如何将html模板(var layout)与文件分开。

2:info.Company必须是ABC,info.Number必须是4

请给我一个帮助!

3 个答案:

答案 0 :(得分:1)

请重新排列您的布局变量并检查

var layout = "<ol><li>Info: </li><ol><ul>Company:"+info.Company+"</ul><ul>Team: "+info.Team+"</ul></ol><li>Number:"+info.Number+"</li><li>Time:"+info.Time+"</li><ol>";

答案 1 :(得分:1)

如果你的javascript在Node.js中运行,你可以使用

var layout = require("./layout.json");

从文件中获取布局。我认为在你的webapp上你使用angular来替换{{var}}的内容,但是如果你生成一个PDF就没有角度来写这些值,这意味着你必须在JS中这样做

layout.replace("{{info.Company}}",info.Company);

答案 2 :(得分:0)

我找到了我朋友的解决方案:代码如下,适用于我的情况。 他使用swig,一个模板引擎:

// get json object from json file
var info = require('./data.json');

var wkhtmltopdf = require('wkhtmltopdf');
var swig  = require('swig');
// Compile a file and store it, rendering it later
var tpl = swig.compileFile('public/template.html');

var layout = tpl({ info: info});

function generatePdf(layout,info) {
    wkhtmltopdf(layout, {output: './file.pdf'});
  }
exports.create_pdf_file = function() {
    generatePdf(layout,info);
}

我发布回答。也许有人需要它