首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用nodejs的pdf2json处理多个pdf文件

无法使用nodejs的pdf2json处理多个pdf文件
EN

Stack Overflow用户
提问于 2016-11-07 15:15:44
回答 1查看 1.2K关注 0票数 0

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

代码语言:javascript
复制
 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]);
 });
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-14 14:41:05

通过在每次迭代中创建一个新的pdf2json,我设法使PDFparser与多个文件一起工作。这不是一个非常“漂亮”的方式来管理多个pdf文件,库应该有一个简单的方法,但它的工作!

代码语言:javascript
复制
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]);
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40468549

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档