首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >nodejs上的wkhtmltopdf生成损坏的pdfs。

nodejs上的wkhtmltopdf生成损坏的pdfs。
EN

Stack Overflow用户
提问于 2013-12-21 13:46:08
回答 1查看 2.7K关注 0票数 0

我使用wkhtmltopdf在nodejs中生成pdfs。

下面是我生成pdf的示例代码

代码语言:javascript
运行
复制
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命令提示符中使用下面的代码一样。

代码语言:javascript
运行
复制
wkhtmltopdf http://www.google.com demo.pdf 

我得到了正确的pdf生成,可悲的是,当我试图在节点环境中生成pdf时,它会生成损坏的pdfs。

万一它有助于我使用wkhtmltopdf 0.11.0 rc2

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-21 15:02:25

wkhtmltopdf用于节点有一个用于windows的bug,因此您可以编写一个新的。

如下所示:

代码语言:javascript
运行
复制
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’}

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20719650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档