feat : ajout d'un parse pour facture #5
This commit is contained in:
21
package-lock.json
generated
21
package-lock.json
generated
@@ -10,7 +10,8 @@
|
|||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"dotenv": "^17.4.2",
|
"dotenv": "^17.4.2",
|
||||||
"express": "^5.2.1"
|
"express": "^5.2.1",
|
||||||
|
"pdf-parse-fork": "^1.2.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/express": "^5.0.6",
|
"@types/express": "^5.0.6",
|
||||||
@@ -147,7 +148,6 @@
|
|||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-25.9.3.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-25.9.3.tgz",
|
||||||
"integrity": "sha512-603BddQMv3pUcr4U2dhujk83N2tTDVr/34wII2B6bJy6g+8WD6yUb11jszNs0gdi4PesVWl7ABt8nYMVpnLUcg==",
|
"integrity": "sha512-603BddQMv3pUcr4U2dhujk83N2tTDVr/34wII2B6bJy6g+8WD6yUb11jszNs0gdi4PesVWl7ABt8nYMVpnLUcg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"undici-types": ">=7.24.0 <7.24.7"
|
"undici-types": ">=7.24.0 <7.24.7"
|
||||||
}
|
}
|
||||||
@@ -970,6 +970,11 @@
|
|||||||
"node": ">= 0.6"
|
"node": ">= 0.6"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/node-ensure": {
|
||||||
|
"version": "0.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/node-ensure/-/node-ensure-0.0.0.tgz",
|
||||||
|
"integrity": "sha512-DRI60hzo2oKN1ma0ckc6nQWlHU69RH6xN0sjQTjMpChPfTYvKZdcQFfdYK2RWbJcKyUizSIy/l8OTGxMAM1QDw=="
|
||||||
|
},
|
||||||
"node_modules/nodemon": {
|
"node_modules/nodemon": {
|
||||||
"version": "3.1.14",
|
"version": "3.1.14",
|
||||||
"resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.14.tgz",
|
"resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.14.tgz",
|
||||||
@@ -1061,6 +1066,18 @@
|
|||||||
"url": "https://opencollective.com/express"
|
"url": "https://opencollective.com/express"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/pdf-parse-fork": {
|
||||||
|
"version": "1.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/pdf-parse-fork/-/pdf-parse-fork-1.2.0.tgz",
|
||||||
|
"integrity": "sha512-ovXkJaTtw8PfLNhBThKHKsZlT6WrCkVKY/QgsDK5GiD/tuL2qzezSlHpEgqHCnq3r/0GOq3NZ+won78KL/dAjQ==",
|
||||||
|
"dependencies": {
|
||||||
|
"debug": "^4.3.4",
|
||||||
|
"node-ensure": "^0.0.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6.8.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/picomatch": {
|
"node_modules/picomatch": {
|
||||||
"version": "2.3.2",
|
"version": "2.3.2",
|
||||||
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz",
|
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz",
|
||||||
|
|||||||
@@ -16,7 +16,8 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"dotenv": "^17.4.2",
|
"dotenv": "^17.4.2",
|
||||||
"express": "^5.2.1"
|
"express": "^5.2.1",
|
||||||
|
"pdf-parse-fork": "^1.2.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/express": "^5.0.6",
|
"@types/express": "^5.0.6",
|
||||||
|
|||||||
65
src/modules/pdf-parse.ts
Normal file
65
src/modules/pdf-parse.ts
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
const fs = require('fs');
|
||||||
|
const pdfParse = require('pdf-parse-fork');
|
||||||
|
|
||||||
|
function pdf_parse(travel: string){
|
||||||
|
interface PdfData {
|
||||||
|
text: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
let fournisseur = '';
|
||||||
|
let date = '';
|
||||||
|
|
||||||
|
interface tab_res {
|
||||||
|
marque : string;
|
||||||
|
date_achats : string;
|
||||||
|
}
|
||||||
|
|
||||||
|
const dataBuffer = fs.readFileSync(travel);
|
||||||
|
|
||||||
|
pdfParse(dataBuffer)
|
||||||
|
.then((data: PdfData) => {
|
||||||
|
// on regarde si c'est auchan ou metro
|
||||||
|
const regexAuchan = /auchan/i;
|
||||||
|
if (regexAuchan.test(data.text)) {
|
||||||
|
fournisseur = "Auchan"
|
||||||
|
|
||||||
|
// on regarde la date d'achat avec une expression reguliere pour auchan
|
||||||
|
const regexDate = /(\d{2})\/(\d{2})\/(\d{4})/;
|
||||||
|
const correspondance = data.text.match(regexDate);
|
||||||
|
if (correspondance) {
|
||||||
|
date = correspondance[0]
|
||||||
|
} else {
|
||||||
|
date = "non trouvé"
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
fournisseur = "Metro"
|
||||||
|
|
||||||
|
// on regarde la date d'achat avec une expression reguliere pour metro
|
||||||
|
const regexDate = /(\d{2})-(\d{2})-(\d{4})/;
|
||||||
|
const correspondance = data.text.match(regexDate);
|
||||||
|
if (correspondance) {
|
||||||
|
date = correspondance[0]
|
||||||
|
} else {
|
||||||
|
date = "non trouvé"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// on renvoie les valeur avec un seul objet
|
||||||
|
|
||||||
|
const res : tab_res = {
|
||||||
|
marque: fournisseur,
|
||||||
|
date_achats: date
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log(res);
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
.catch((error: unknown) => {
|
||||||
|
console.error("Erreur :", error);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
export default pdf_parse;
|
||||||
Reference in New Issue
Block a user