bar*_*ium 6 pdf node.js pdftotext
有没有办法在没有任何操作系统依赖项的情况下从 nodejs 中的 PDF 中提取文本(如 pdf2text 或 Windows 上的 xpdf)?我无法在 nodejs 中找到任何“本机”pdf 包。它们始终是现有操作系统命令之上的包装器/实用程序。谢谢
Jac*_*eld 12
经过一番工作,我终于获得了一个可靠的功能,可以使用https://github.com/mozilla/pdfjs-dist从 PDF 中读取文本
要使其正常工作,首先在命令行上进行 npm install:
npm i pdfjs-dist
Run Code Online (Sandbox Code Playgroud)
然后使用以下代码创建一个文件(在本例中我将文件命名为“pdfExport.js”):
const pdfjsLib = require("pdfjs-dist");
async function GetTextFromPDF(path) {
let doc = await pdfjsLib.getDocument(path).promise;
let page1 = await doc.getPage(1);
let content = await page1.getTextContent();
let strings = content.items.map(function(item) {
return item.str;
});
return strings;
}
module.exports = { GetTextFromPDF }
Run Code Online (Sandbox Code Playgroud)
然后它可以简单地在您拥有的任何其他 js 文件中使用,如下所示:
const pdfExport = require('./pdfExport');
pdfExport.GetTextFromPDF('./sample.pdf').then(data => console.log(data));
Run Code Online (Sandbox Code Playgroud)
小智 7
我想我会在这里为将来遇到这个问题的人插话。我遇到了这个问题,花了几个小时浏览 NPM 上的所有 PDF 库。我的要求是我需要在 AWS Lambda 上运行它,因此不能依赖于操作系统依赖项。
下面的代码改编自另一个 stackoverflow 答案(我目前找不到)。唯一的区别是我们导入了适用于 Node >= 12 的 ES5 版本。如果您只导入 pdfjs-dist ,则会出现“Readable Stream is not Defined”的错误。希望能帮助到你!
import * as pdfjslib from 'pdfjs-dist/es5/build/pdf.js';
export default class Pdf {
public static async getPageText(pdf: any, pageNo: number) {
const page = await pdf.getPage(pageNo);
const tokenizedText = await page.getTextContent();
const pageText = tokenizedText.items.map((token: any) => token.str).join('');
return pageText;
}
public static async getPDFText(source: any): Promise<string> {
const pdf = await pdfjslib.getDocument(source).promise;
const maxPages = pdf.numPages;
const pageTextPromises = [];
for (let pageNo = 1; pageNo <= maxPages; pageNo += 1) {
pageTextPromises.push(Pdf.getPageText(pdf, pageNo));
}
const pageTexts = await Promise.all(pageTextPromises);
return pageTexts.join(' ');
}
}
Run Code Online (Sandbox Code Playgroud)
用法
const fileBuffer = fs.readFile('sample.pdf');
const pdfText = await Pdf.getPDFText(fileBuffer);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12305 次 |
| 最近记录: |