2013-12-21 87 views
0

我使用wkhtmltopdf以生成的NodeJSwkhtmltopdf上生成的NodeJS

下面的PDF是我的示例代碼生成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(); 
     }); 

上面的代碼被生成腐敗PDF文件損壞的PDF。我無法弄清楚這個問題。 雖然當我生成使用命令提示它被正確 生成就像當我在窗口使用以下代碼的PDF命令提示

wkhtmltopdf http://www.google.com demo.pdf 

我獲取生成正確的PDF,不幸的是,當我嘗試生成在節點環境PDF格式,它會產生腐敗pdfs。

櫃面它有助於我使用wkhtmltopdf 0.11.0 RC2

在此先感謝。

回答

3

wkhtmltopdf節點有一個窗口的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')); 

注:帕拉姆現在是「信」不是{每頁:「信」}

+0

我想你的代碼,會盡快回復您我可以。似乎只有參數被改變...? – CrazyNooB

+0

現在它工作得很好。但是,而不是google.com,當我傳遞一個包含html字符串的參數時,它無法生成輸出。任何建議...? – CrazyNooB

+0

我用同樣的方法,但我的HTML是巨大的字符串,不知道它爲什麼會產生腐敗pdf.I將與新的代碼檢查。感謝 – CrazyNooB

相關問題