2017-12-13 32 views
0

pdf.js를 사용하여 pdf 파일을 구문 분석합니다. 먼저 파일을 업로드하고 해당 파일을 구문 분석하려고합니다. PDFJS.getDocument (url)에서 URL을 구문 분석하여 함수를 읽습니다.오류 : PDFDocument : 스트림에 데이터가 있어야합니다.

업로드 부분을 사용하지 않고 URL을 하드 코딩하면 pdf 파일이 작동합니다. 코드

:

var parse = function(payload,callback){ 
      var data = payload; 
      if(data.file){ 
       var name = data.file.hapi.filename; 
       var ext = name.split('.'); 
       var extension = ext[1]; 
       if(extension == "pdf"){ 
        var path = __dirname + "/uploads/" + name; 
        checkFileExist(); 
        var file = fs.createWriteStream(path); 
        file.on('error', function (err) { 
         console.error(err) 
        }); 
        data.file.pipe(file); 
        var fileName = data.file.hapi.filename; 
        console.log(fileName); 
        var fileAbsolutepath = __dirname + "/uploads/" + fileName ; 
        console.log(fileAbsolutepath); 
        var parser = script.pdfParser(fileAbsolutepath,function(err,resp){ 
         if(err){ 
          callback(err); 
         } 
         else { 
          callback(resp); 
         } 
        }) 
        callback(JSON.stringify(fileName)); 
       } 
       else{ 
        console.log("Invalid fileType"); 
        callback(JSON.stringify("Invalid FileType")); 
       } 
      } 
} 

var checkFileExist = function() { 
    var path = __dirname + '/uploads'; 
    fs.exists(path, function(exists) { 
     if (exists === false) fs.mkdirSync(path); 
    }); 
}; 


exports.pdfParser = function(url,callback){ 
PDFJS.workerSrc = 'pdf.worker.js'; 

PDFJS.getDocument(url).then(function (pdf) { 
    var pdfDocument = pdf; 
}} 

파일이 업로드 예상 파일 크기를 제대로 업로드 폴더 아직도 내가 오류를 얻을 : PDF로 파일을 구문 분석하기 위해

답변

0

"오류 : PDFDocument 스트림 데이터가 있어야합니다." js를 사용하여 파일을 PDFJS.getDocument로로드하는 대신 PDF 파일을 arrayBuffer 또는 Uint8Array으로 변환하고이를 사용하여 LocalPdfManager 개체를 새로 만듭니다. 그런 다음 LocalPdfManager의 메서드를 직접 호출하여 pdf를 구문 분석 할 수 있습니다. 이 같은

뭔가 :

import { LocalPdfManager } from 'pdfjs-dist/lib/core/pdf_manager'; 

pdfManager = new LocalPdfManager(1, arrayBuffer, '', {}, ''); 
// parameters = (docId, data, password, evaluatorOptions, docBaseUrl) 
pdfManager.ensureDoc('parseStartXRef', []); // [] = arguments 
pdfManager.ensureDoc('parse', false); // false = recoveryMode 
pdfManager.ensureDoc('numPages'); 
pdfManager.ensureDoc('fingerprint'); 

그런 다음 구문 분석 된 PDF 데이터를 pdfManager.pdfDocument 봐.

예를 들어 주 "/ Catalog"항목은 pdfManager.pdfDocument.catalog.catDict입니다.

이 방법을 사용하여 브라우저에서 로컬로 pdf 파일을 성공적으로 구문 분석하고 수정했습니다. 나는 node.js가있는 서버에서이 서버를 사용하지 않았지만 동일한 기능을 수행해야합니다.