【问题标题】:Can't process multiple pdf files using pdf2json for nodejs无法使用 pdf2json for nodejs 处理多个 pdf 文件
【发布时间】:2017-03-20 23:53:28
【问题描述】:

我正在使用https://github.com/modesty/pdf2json 来解析多个 pdf 文件。它适用于 1 个单个文件,但在尝试加载多个文件时,pdfParser_dataReadyevent 似乎总是使用同一个文件触发。 这是我尝试过的

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

【问题讨论】:

    标签: javascript json node.js parsing pdf


    【解决方案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]);
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-20
      • 2010-10-16
      • 2019-08-24
      • 2021-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多