为什么pdf解析库pdf 2 json和pdf-parse似乎不能与Next JS应用程序路由器一起工作?

0md85ypi  于 2023-06-29  发布在  其他
关注(0)|答案(1)|浏览(142)

我一直在尝试在我的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。
我在这里错过了什么吗?

gg0vcinb

gg0vcinb1#

您需要添加一个文件夹test/data/05-versions-space.pdf
我知道这是非常随机的,但如果你看看代码,你会发现它需要这个文件-可以是任何pdf -路径和名称必须是相同的。

相关问题