phantomjs - 将HTML呈现为PDF

时间:2017-09-07 23:14:20

标签: node.js pdf phantomjs

我在将HTML文件呈现为PDF文件时遇到问题。我将两个参数传递给命令行。第一个是HTML输入文件,第二个是PDF输出

/var/bin/phantomjs-2.1.1-linux-x86_64/bin/phantomjs /var/www/nodejs/html_to_pdf.js /root/input.html /root/hello.pdf

var page = require('webpage').create(),
    args = require('system').args,
    f = require('fs').open(args[1], 'r');

page.paperSize = {
    format : 'A4',
    orientation : 'portrait',
    margin : {
        top : '1cm',
        left : '1cm',
        bottom : '1cm',
        right : '1cm'
    }
};

page.content = f.read();
page.setContent(page.content, page);
page.render(args[2]);
phantom.exit();

没有返回错误且没有输出PDF文件?

这是输入文件

http://www.filedropper.com/input_3

1 个答案:

答案 0 :(得分:1)

我建议重写page.open一个文件:

var page = require('webpage').create();
var args = require('system').args;
var fs = require('fs');

function getFileUrl(str) {
  var pathName = fs.absolute(str).replace(/\\/g, '/');
  // Windows drive letter must be prefixed with a slash
  if (pathName[0] !== "/") {
    pathName = "/" + pathName;
  }
  return encodeURI("file://" + pathName);
};

page.paperSize = {
    format : 'A4',
    orientation : 'portrait',
    margin : {
        top : '1cm',
        left : '1cm',
        bottom : '1cm',
        right : '1cm'
    }
};

page.open(getFileUrl(args[1]), function(){
    page.render(args[2]);
    phantom.exit();
});

enter image description here

getFileUrl来自this answer