2014-05-16 3 views
0

여기에 질문을 올리는 것은 처음입니다. 기본적으로 PdfKit (클라이언트 측)을 사용하여 브라우저에서 일본 문자로 PDF 파일을 내보내려고합니다.브라우저에서 nodejs 서버의 올바른 응답 데이터를 얻는 방법

서버 측 (Nodejs) :

function download_font(req, res) { 
var fontpath = path.join(__dirname, 'kochi-gothic-subst.ttf'); 
fs.readFile(fontpath, function(err, content) { 
    if (err) { // If we couldn't read the file for some reason 
     res.writeHead(404, { // Send a 404 Not Found status 
      "Content-Type": "text/plain; charset=UTF-8"}); 
     res.write(err.message); // Simple error message body 
     res.end();    // Done 
    } 
    else {  // Otherwise, if the file was read successfully. 
     res.writeHead(200, // Set the status code and MIME type 
          {"Content-Type": 'application/octet-stream'}); 
     res.write(content); // Send file contents as response body 
     res.end();   // And we're done 
    } 
}); 

요청에서 내가 Buffer.Here 내 코드에 의해 서버에서 클라이언트로 글꼴 파일을 보낼 필요가 ...이 명시 적으로 모든 사용 Node.js를하다 클라이언트 측 javascript :

$.get("/log/font").done(function(data) { 
     var blob = new Blob([data], { type: 'application/octet-stream' }); 

     var doc = new PDFDocument(); 
     var stream = doc.pipe(blobStream()); 

     doc.font(blob).fontSize(25).text('武大郎',100, 100); 
     doc.end(); 

     stream.on('finish', function() { 
      blob = stream.toBlob('application/pdf'); 
      var url = window.URL || window.webkitURL; 
      var link = document.createElement('a'); 
      link.href = url.createObjectURL(blob); 
      link.download = 'test.pdf'; 

      var event = document.createEvent("MouseEvents"); 
      event.initEvent("click", true, false); 
      link.dispatchEvent(event); 
     }); 
    }); 

브라우저 실행 오류 메시지 표시 : 지원되지 않는 오류 : 지원되지 않는 글꼴 형식 또는 표준 PDF 글꼴이 아닙니다.

그래서 서버와 클라이언트의 크기 데이터를 확인하십시오. 파일 크기를 확인하기 위해 내 코드 여기 :

*$.get("/log/font").done(function(data) { 
     //alert("Data Loaded: " + data); 

     var blob = new Blob([data], { type: 'application/octet-stream' }); 
     var url = window.URL || window.webkitURL; 
     var link = document.createElement('a'); 
     link.href = url.createObjectURL(blob); 
     link.download = 'kochi-gothic-subst.ttf'; 

     var event = document.createEvent("MouseEvents"); 
     event.initEvent("click", true, false); 
     link.dispatchEvent(event); 
    }); 

나는 두 파일이 동일하지 참조하십시오. 누구든지 브라우저 측에서 일본 문자로 pdf를 내보낼 수 있습니까?

답변

0

나는 버퍼 객체를 필요로하는 Blob 객체를 전달하고 있다고 생각한다.

여기 str2ab 함수를 사용하여 배열 버퍼에 Ajax 호출로부터 리턴 된 데이터를 변환보십시오 http://updates.html5rocks.com/2012/06/How-to-convert-ArrayBuffer-to-and-from-String

는 그런 다음 doc.font() 함수에 전달하는.

app.use(express.static(__dirname + '/public')); 

거기에서 공개 디렉토리 및 요청에 글꼴을 넣어 : 당신이 (일을 단순화하기 위해) 정적 글꼴 파일을 제공하는 특급 미들웨어를 사용하여 시도 할 수있는 서버 측에

.

+0

Vinnie Pepi에게 답장을 보내 주셔서 감사합니다.하지만 여전히 작동하지 않습니다. – user3643255