2016-12-31 4 views
0

내 웹 응용 프로그램이 외부 API에 HTTPS GET 요청을하고 있습니다.API에서 가져온 PDF의 빈 페이지

%PDF-1.4 

는 내가 뭘하고 싶은 것은 클라이언트에이 파일을 제공하는 서버에서이 PDF를 저장할 수 있습니다 : 내가받는 것은로 시작하는 PDF 파일입니다. 문제는 PDF에 아무 것도 없어야하는 빈 페이지가 있다는 것입니다. 여기

는 PDF를 검색하고 서버에 저장을 담당하는 코드입니다

Meteor.http.get('url/' + chartId, { 
     headers: { 
     Authorization: 'Bearer ' + key.token 
     } 
    }, function(err, result) { 
     if(!err) { 
     var fs = Npm.require('fs'); 
     var path = process.env['METEOR_SHELL_DIR'] + '/../../../public'; 

     fs.writeFile(path + "/charts/" + Meteor.userId() + '.pdf', result.content, (function (err) { 
      if (err) { 
       console.log("Error:" + err); 
      } 
     })); 

     } else { 
     throw new Error('Error from API getting documents'); 
     } 
    }); 

이상한 것은 내가 서버에 저장되는 PDF가 그들에 텍스트 페이지를 보여주고 있다는 것입니다,하지만 빈 페이지를 보여줍니다 어디에 이미지 (차트)가 있어야합니다. Perhabs 이것이 인코딩 문제입니까?

+1

는'result.content' 문자의 문자열로 내용을 반환 할 수 있습니까? 이 경우 원본 바이트로 반환하는 다른 속성을 찾아야합니다. – mkl

+0

@mkl'result.content'는 실제로 문자열을 반환합니다. 불행히도 이것은 응답에서 얻을 수있는 유일한 데이터입니다. 이 문자열에서 원래 바이트를 가져 오는 방법이 있습니까? – JoeriSmits

+0

바이너리 파일을 텍스트로 해석하는 것은 일반적으로 파괴적입니다. 즉, 되돌릴 수 없습니다. Javascript 및 특히 Meteor와 관련한 지식이 없기 때문에 현재의 사례가 예외인지 여부를 알지 못합니다. – mkl

답변

0

좋아, 처음에는 이것이 인코딩과 관련이 있다는 것을 알았습니다. HTTP 요청 encoding: 'binary'에 올바른 헤더를 설정하고 .writeFile()을 사용하는 동안 올바른 인코딩을 사용해야합니다.

출처 : Node express save pdf from binary string