首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >nodejs的衍生和使用pdf2swf的exec

nodejs的衍生和使用pdf2swf的exec
EN

Stack Overflow用户
提问于 2012-08-22 23:17:46
回答 1查看 1K关注 0票数 1

我希望有人可以帮助解决这个问题,因为我自己没有得到它。

我编译了最新版本的pdf2swf,一切都运行得很好,除了我想在NodeJS中使用它作为衍生的child_process。

当我使用与exec相同的命令时,它再次工作。提供一些代码示例:

代码语言:javascript
复制
// convert a pdf to swf using exec (works)
var tmpSwfLocation = docsDir+'/Paper.pdf.swf';
var pdf2swf = cp.exec('pdf2swf '+tmpPDFLocation+' -o '+tmpSwfLocation+' -G -v -f -T 9 -t -j '+quality+' -s subpixels='+resolution+' -s storeallcharacters -s poly2bitmap', function(err, stdout, stderr){
  console.log(stdout);
  console.log(stderr);
  var end = Date.now();
  console.log('pdf2swf: SWF created in '+((end-start) /1000)+' seconds');
});

// convert a pdf to swf (does not work)
var tmpSwfLocation = docsDir+'/Paper.pdf.swf';
var pdf2swf = cp.spawn('pdf2swf', ['-G','-v','-f','-T 9', '-t', '-j '+quality,'-s subpixels='+resolution,'-s storeallcharacters', '-s poly2bitmap',tmpPDFLocation, '-o '+tmpSwfLocation],{setsid:true});
pdf2swf.stdout.on('data',function(output){
  console.log("pdf2swf:"+output)
});
pdf2swf.stderr.on('data',function(output){
  console.log("pdf2swf ERROR:"+output);
});
pdf2swf.stdout.on('end', function(output){
  var end = Date.now();
  console.log('pdf2swf: SWF created in '+((end-start) /1000)+' seconds');
});

当child_process尝试将数据写入文件时,衍生进程会在最后中断:

代码语言:javascript
复制
pdf2swf:NOTICE  Writing SWF file  /home/bitnami/flipdoc/ec2-instances/worker/pdf_test/test_directory/test-Testfile_31MB_26Pages.pdf_0/docs/Paper.pdf.swf
pdf2swf:FATAL   Could not create " /home/bitnami/flipdoc/ec2-instances/worker/pdf_test/test_directory/test-Testfile_31MB_26Pages.pdf_0/docs/Paper.pdf.swf". 

使用exec,该过程使用以下命令成功完成:

代码语言:javascript
复制
pdf2swf:NOTICE  Writing SWF file  /home/bitnami/flipdoc/ec2-instances/worker/pdf_test/test_directory/test-Testfile_31MB_26Pages.pdf_0/docs/Paper.pdf.swf

和一个存在的文件。

附加信息:在整个过程之前,我对整个"test_directory“执行递归chmod777。

问候

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-24 19:20:14

我自己解决的..。永远不会(想都不要想……)在派生进程的参数中使用空格。如果你有一个可以在其间使用空格的param=value参数,只需将它们与其他参数一起排在数组中即可。

上面的spawn的源代码现在看起来像这样:

代码语言:javascript
复制
var pdf2swf = cp.spawn('pdf2swf', [tmpPDFLocation, '-o',tmpSwfLocation,'-G','-vvv','-f','-T','9', '-t', '-j',quality,'-s','subpixels='+resolution,'-s','storeallcharacters', '-s','poly2bitmap']);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12076310

复制
相关文章

相似问题

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