我使用wkhtmltopdf在nodejs中生成pdfs。
下面是我生成pdf的示例代码
var wkhtmltopdf = require('wkhtmltopdf')
, createWriteStream = require('fs').createWriteStream;
var r = wkhtmltopdf('http://www.google.com', { pageSize: 'letter' })
.pipe(createWriteStream('C:/MYUSERNAME/demo.pdf'));
r.on('close', function(){
mycallback();
});
上面的代码正在生成损坏的pdfs。我想不出这个问题。虽然当我使用命令提示符生成pdfs时,它的生成是正确的,就像在windows命令提示符中使用下面的代码一样。
wkhtmltopdf http://www.google.com demo.pdf
我得到了正确的pdf生成,可悲的是,当我试图在节点环境中生成pdf时,它会生成损坏的pdfs。
万一它有助于我使用wkhtmltopdf 0.11.0 rc2
提前谢谢。
发布于 2013-12-21 07:02:25
wkhtmltopdf用于节点有一个用于windows的bug,因此您可以编写一个新的。
如下所示:
function wkhtmltopdf(input, pageSize) {
var spawn = require('child_process').spawn;
var html;
var isUrl = /^(https?|file):\/\//.test(input);
if (!isUrl) {
html = input;
input = '-';
}
var args = ['wkhtmltopdf', '--quiet', '--page-size', pageSize, input, '-']
if (process.platform === 'win32') {
var child = spawn(args[0], args.slice(1));
} else {
var child = spawn('/bin/sh', ['-c', args.join(' ') + ' | cat']);
}
if (!isUrl) {
child.stdin.end(html);
}
return child.stdout;
}
// usage:
createWriteStream = require('fs').createWriteStream;
wkhtmltopdf('http://google.com/', 'letter')
.pipe(createWriteStream('demo1.pdf'));
wkhtmltopdf('<body>hello world!</body>', 'letter')
.pipe(createWriteStream('demo2.pdf'));
注意事项:现在是‘’不是{ pageSize:‘pageSize’}
https://stackoverflow.com/questions/20719650
复制相似问题