2016-11-07 34 views
0

我正在使用https://github.com/modesty/pdf2json解析多個pdf文件。它適用於1個單一文件,但在嘗試加載多個文件時,pdfParser_dataReady事件似乎總是以相同的文件觸發。 這是我已經試過無法使用pdf2json處理多個pdf文件nodejs

var PDFParser = require('pdf2json'); 
var pdfParser = new PDFParser(); 
var fs = require('fs'); 
var fileNames = []; 
var fileCont = 0; 

fs.readdir(fileFolder, function(err, files){ 
     for (var i = files.length - 1; i >= 0; i--) { 
     if (files[i].indexOf('.pdf') !== -1){ 
      fileNames.push(files[i]); 
     } 

     pdfParser.loadPDF(fileNames[fileCont]); 
}); 

pdfParser.on('pdfParser_dataReady', function(data){ 
     //Do all my stuff and insert in db... 

     fileCont++; 

     If (fileCont === fileNames.lenght){ 
      for (var i = fileNames.length - 1; i >= 0; i--) { 
       fs.unlink(fileFolder + fileNames[i]); 
      } 
      return res.json({ 
       data: 'ok ' 
      }); 
     } 

     pdfParser.loadPDF(fileFolder + fileNames[fileCont]); 
}); 

回答

1

我設法通過創建在每次迭代中新PDFparser,使多個文件pdf2json工作。這不是管理多個pdf文件的非常「美麗」的方式,圖書館應該有一個簡單的方法來做到這一點,但它的工作原理!

var PDFParser = require('pdf2json'); 
var fs = require('fs'); 
var fileNames = []; 
var fileFolder = 'myFolder/'; 
var fileCont = 0; 

var loadPDF = function(filePath){ 
    if(fileNames.length === fileCont){ 
    //Insert in db and add any FINAL code, then return; 
    } 
    else{ 
    //Call for another file to process 
    var pdfParser = null; 
    pdfParser = new PDFParser(); 
    pdfParser.loadPDF(filePath); 

    pdfParser.on('pdfParser_dataError', function(err){ 
     //Handle pdfParser error 
    }); 

    pdfParser.on('pdfParser_dataReady', function(data){ 
     //Get the pdf data and process it 
     fileCont++; //increase the file counter 
     loadPDF(fileFolder + fileNames[fileCont]); //parse the next file 
    }); 
    } 
}; 

fs.readdir(fileFolder, function(err, files){ 
    for (var i = files.length - 1; i >= 0; i--) { 
    if (files[i].indexOf('.pdf') !== -1){ 
     fileNames.push(files[i]); 
    } 
    } 

    loadPDF(fileFolder + fileNames[fileCont]); 
});