我一直在尝试在我的Next JS应用程序中实现pdf解析逻辑。看起来pdf 2 json和pdf-parse库不适用于新的Next JS应用程序路由器。
复制步骤:
1.运行npx create-next-app@latest
并按照提示操作,然后选择使用应用程序路由器。
1.在app/api/test下添加API路由
import { NextResponse } from "next/server";
import fs from "fs";
import PDFParser from "pdf2json";
import pdf from "pdf-parse";
export async function GET() {
const pdfParser = new PDFParser();
pdfParser.on("pdfParser_dataError", (errData: any) =>
console.error(errData.parserError)
);
pdfParser.on("pdfParser_dataReady", (pdfData: any) => {
console.log(pdfData);
});
pdfParser.loadPDF("./sample.pdf");
return NextResponse.json({});
}
1.在根目录中添加sample.pdf文件
1.从终端curl localhost:3000/api/test
运行,pdf 2 json抛出一个未捕获的错误:
- error node_modules/pdf2json/lib/pdf.js (66:0) @ eval
- error Error [ReferenceError]: nodeUtil is not defined
1.尝试pdf-parse返回404未找到API路由
import { NextResponse } from "next/server";
import fs from "fs";
import PDFParser from "pdf2json";
import pdf from "pdf-parse";
export async function GET() {
let dataBuffer = fs.readFileSync("./sample.pdf");
pdf(dataBuffer).then(function (data) {
// number of pages
console.log(data.numpages);
// number of rendered pages
console.log(data.numrender);
// PDF info
console.log(data.info);
// PDF metadata
console.log(data.metadata);
// PDF.js version
// check https://mozilla.github.io/pdf.js/getting_started/
console.log(data.version);
// PDF text
console.log(data.text);
});
return NextResponse.json({});
}
在Next JS中使用旧的页面路由器创建了一个单独的项目后,上面的问题都没有发生,并且能够正确地解析PDF。
我在这里错过了什么吗?
1条答案
按热度按时间gg0vcinb1#
您需要添加一个文件夹test/data/05-versions-space.pdf
我知道这是非常随机的,但如果你看看代码,你会发现它需要这个文件-可以是任何pdf -路径和名称必须是相同的。