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

问题描述

我需要将pdf上传到我的服务器,然后从PDF中提取文本。这就是我所拥有的:

dtype

当我记录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}`));