节点将 pdf 从 express 文件上传转换为文本

Node convert pdf from express file upload to text

我需要将 pdf 上传到我的服务器并从 PDF 中提取文本。这就是我的 :

const express = require('express');
const fileUpload = require('express-fileupload');

const app = express();

app.use(fileUpload());

app.post('/upload', (req, res) => {
  try {
    let sampleFile = req.files.File;
  } catch (err) {
    res.send(err.message);
  }
});

const PORT = process.env.PORT || 5000;
app.listen(PORT, () => console.log(`server started on port ${PORT}`));

当我记录 sampleFile 时,它​​是 json。它有一堆带有数字的数据,我不确定如何从中获取文本。我看到执行此操作的库已经有一个指向的文件。

如果我们使用pdf2json模块,我们可以创建一个解析器,然后将上传的数据传递给parseBuffer函数。

我们可以访问文件对象,或者使用 getRawTextContent() 函数获取原始文本内容。

const express = require('express');
const fileUpload = require('express-fileupload');
const PDFParser = require("pdf2json");

const app = express();

app.use(express.static("./"));
app.use(fileUpload());

app.post('/upload', async (req, res) => {
    try {
        let sampleFile = req.files.File;
        console.log("Sample file:", sampleFile);
        let text = await getPDFText(sampleFile.data);
        console.log("PDF Text:", text);
        res.sendStatus(201);
    } catch (err) {
        res.send(err.message);
    }
});

function getPDFText(data) {
    return new Promise((resolve, reject) => {
        const pdfParser = new PDFParser(null, 1);
        pdfParser.on("pdfParser_dataError", reject);
        pdfParser.on("pdfParser_dataReady", pdfData => {
            resolve(pdfParser.getRawTextContent());
        });
        pdfParser.parseBuffer(data);
    });
}

const PORT = process.env.PORT || 5000;
app.listen(PORT, () => console.log(`server started on port ${PORT}`));