espace-paie-odentas/scripts/extract-pdf-text.js

61 lines
1.5 KiB
JavaScript
Executable file

#!/usr/bin/env node
/**
* Script Node.js standalone pour extraire le texte d'un PDF avec pdf-parse
* N'utilise PAS Webpack, donc pas de conflit avec pdfjs-dist
*
* Usage: node extract-pdf-text.js < input.pdf
* ou: node extract-pdf-text.js /path/to/file.pdf
*
* Retourne JSON: { text: "...", numPages: 3, info: {...} }
*/
const fs = require('fs');
const { PDFParse } = require('pdf-parse');
async function extractText() {
try {
// Lire le PDF depuis stdin ou fichier
let buffer;
if (process.argv[2]) {
// Fichier passé en argument
buffer = fs.readFileSync(process.argv[2]);
} else {
// Lire depuis stdin
const chunks = [];
for await (const chunk of process.stdin) {
chunks.push(chunk);
}
buffer = Buffer.concat(chunks);
}
// Extraire le texte avec pdf-parse v2
// Si on a un fichier, passer le chemin comme url
const options = process.argv[2]
? { url: process.argv[2] }
: { buffer };
const parser = new PDFParse(options);
const data = await parser.getText();
// Retourner le résultat en JSON
const result = {
text: data.text,
numPages: data.pages?.length || 0,
info: data.info,
metadata: data.metadata
};
console.log(JSON.stringify(result));
process.exit(0);
} catch (error) {
console.error(JSON.stringify({
error: error.message,
stack: error.stack
}));
process.exit(1);
}
}
extractText();