我使用https://github.com/modesty/pdf2json来解析多个pdf文件。它适用于1个单个文件,但在尝试加载多个文件时,pdfParser_dataReady
事件似乎始终使用相同的文件触发。
这就是我试过的
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]);
});
答案 0 :(得分: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]);
});