2016-11-07 1 views
0

verarbeiten Ich verwende https://github.com/modesty/pdf2json, um mehrere PDF-Dateien zu analysieren. Es funktioniert mit 1 einzelnen Datei, aber beim Versuch, mehrere Dateien zu laden, scheint das pdfParser_dataReady Ereignis immer mit der gleichen Datei zu feuern. Das ist, was ichKann nicht mehrere PDF-Dateien mit pdf2json für 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]); 
}); 

Antwort

1

versucht habe ich es geschafft, pdf2json Arbeit mit mehreren Dateien zu machen, indem Sie einen neuen PDFparser in jeder Iteration zu schaffen. Dies ist keine sehr "schöne" Möglichkeit, mehrere PDF-Dateien zu verwalten, die Bibliothek sollte eine einfache Möglichkeit haben, es zu tun, aber es funktioniert!

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]); 
}); 
Verwandte Themen