我在这个主题node wkhtmltopdf create corrupted PDF in node webkit中发现了一条评论,表明可以通过使用PhantomJS从node-webkit中的html生成pdf,尤其是使用这个脚本:https://github.com/ariya/phantomjs/blob/master/examples/rasterize.js
但是我不明白如何在没有命令行调用的情况下使用这个脚本...
答案 0 :(得分:0)
无法直接在node.js中使用该脚本。您可以使用child_process模块将phantomjs作为带有rasterize.js
脚本和选项的命令行脚本调用。
另一种可能性是使用node.js的幻像包装器直接包含rasterize.js
的代码。您只需要进行一些小调整,例如从包装器传递page
参数,而不需要创建。可能的包装器是node-phantom或phantomjs-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
})