2014-09-08 4 views
0

노드 (Macox 및 Ubuntu에서 실행)에서 ghostscript를 사용하고 있습니다. 내 고스트 스크립트 명령은 다음과 같습니다.노드가있는 ghostScript가 치명적인 오류를 발생합니다.

/usr/local/bin/gs -dNOPAUSE -sDEVICE=pdfwrite -sOUTPUTFILE=output.pdf -dBATCH input1.pdf input2.pdf 

이 명령을 수동으로 실행하면 작동합니다. 이 NodeJS에 의해 쫓겨 때,이 오류가 발생합니다 :

var execCommand = config.ghostScript + " -dNOPAUSE -sDEVICE=pdfwrite -sOUTPUTFILE=" + finalFileName + " -dBATCH " + inputFiles; 
exec(execCommand, function (error, stdout, stderr) { 
    if (error !== null) { 
     var err = new Error("pdf could not be generated"); 
     err.status = constants.HTTPCODE_INTERNAL_SERVER_ERROR; 
     throw err; 
    } else { 
     console.log("success"); 
    } 

어떤 아이디어 :

[2014-09-08 10:33:20.587] [INFO] console - { [Error: Command failed: GPL Ghostscript 9.10: Unrecoverable error, exit code 1 
] killed: false, code: 1, signal: null } 
Error: Command failed: GPL Ghostscript 9.10: Unrecoverable error, exit code 1 

at ChildProcess.exithandler (child_process.js:647:15) 
at ChildProcess.EventEmitter.emit (events.js:98:17) 
at maybeClose (child_process.js:753:16) 
at Socket.<anonymous> (child_process.js:966:11) 
at Socket.EventEmitter.emit (events.js:95:17) 
at Pipe.close (net.js:465:12) 

노드의 코드는 다음과 같습니다?

+0

입력 파일 사이에 공백이있는 방식으로 inputFiles에 문제가 있다고 생각하지만 NodeJS를 통해 inputfiles를 반복하고 각 공백을 구분해야합니다. – user1283633

답변

0

나는 user1283633이 맞다고 생각합니다. 어떤 경우이든 먼저 'exec'변수에있는 것을 출력하고 기대 한 바가 있는지 확인해야합니다. 사람들이 '이 명령 행이 작동한다고 말하면 10 번 중 9 번이긴하지만 내 프로그램에 넣을 때 응용 프로그램에 의해 생성되는 것이 동일한 명령 행이 아님이 밝혀졌습니다.

Ghostscript에서 stdout 및 stderr을 캡처해야합니다 (다른 파일을 파일로 리디렉션 할 수없는 경우). 고스트 스크립트는 의심의 여지없이 문제에 대한 더 많은 정보를 인쇄하고 있습니다.

+0

팁 켄에게 감사드립니다. 매우 유용합니다! – Jason

1

Ghostscript4JS는 Ghostscript C 명령 API를 바인드하여 Node.JS 세계에 힘을 실어주는 모듈입니다. https://www.npmjs.com/package/ghostscript4js

Ghostscript4JS는 JavaScript 코드에서 C 명령 Ghostscript API를 직접 호출 할 수 있도록 기본 Node.JS 애드온입니다.

  1. 더 나은 오류 처리 :이 방법으로 당신은 두 가지 장점을 가지고 당신 직접 차단하여 동기화 방법에 대한 시도/캐치를 통해 오류 및 비동기 방법 다음/캐치 약속.
  2. 성능 셸 명령을 호출하면 Node.js 환경에서 직접 C 또는 C++ API를 호출하는 것보다 더 많은 시간과 리소스가 소요됩니다.

프로그래머는 외부 도구 호출을 제어 할 수 있습니다.

+0

스택 오버플로에 오신 것을 환영합니다! 링크 전용 답변은 도움이되지 않습니다. 특히 링크가 끊어져야하는 경우에 유용합니다. 여기에 대한 대답에 중요한 측면을 제시하고 참조 용 링크를 제공하십시오. –

관련 문제