在node-Webkit中使用PhantomJS生成PDF

时间:2014-08-06 14:17:18

标签: node.js pdf phantomjs node-webkit

我在这个主题node wkhtmltopdf create corrupted PDF in node webkit中发现了一条评论,表明可以通过使用PhantomJS从node-webkit中的html生成pdf,尤其是使用这个脚本:https://github.com/ariya/phantomjs/blob/master/examples/rasterize.js

但是我不明白如何在没有命令行调用的情况下使用这个脚本...

2 个答案:

答案 0 :(得分:0)

无法直接在node.js中使用该脚本。您可以使用child_process模块将phantomjs作为带有rasterize.js脚本和选项的命令行脚本调用。

另一种可能性是使用node.js的幻像包装器直接包含rasterize.js的代码。您只需要进行一些小调整,例如从包装器传递page参数,而不需要创建。可能的包装器是node-phantomphantomjs-node。如果您使用node-webkit打包您的应用程序,那么您可能会遇到phantomjs可执行文件路径的问题。

答案 1 :(得分:0)

Phantomjs的Rasterize.js很好地生成了干净的多页可编辑pdf,保存了所有棘手的CSS。尝试在nodejs环境中使用它时我有点困惑,但它非常直接。

根据NPM Phantomjs readme:(我已经明确说明了一点)

var path = require('path')
var childProcess = require('child_process')
var phantomjs = require('phantomjs')
var binPath = phantomjs.path

//Args for rasterize.js: [ rasterize.js URL filename [paperwidth*paperheight|paperformat] [zoom]') ]

var childArgs = [ path.join(__dirname, 'rasterize.js'),'url','docname.pdf','A4',1.00]

childProcess.execFile(binPath, childArgs, function(err, stdout, stderr) {
  // handle results
})