@cedrugs/pdf-parse (英语)
纯JavaScript,跨平台 PDF 文本和元数据提取.
维持的叉子 pdf-parse 与 已捆绑类型脚本, (中文(简体) ), 有利于无害环境管理的默认出口,以及 节点18+ 支助.
为什么这个叉子?
- 包括的类型 - 船舶
index.d.ts(无需要)@types/pdf-parse) (中文(简体) ). - 无害环境管理和CJS友好 ——默认导入工程出箱.
- 相同的 API 作为倒置的上游.
- 节点18+ 现代运行时间的最小值.
如果你想保持现有的
import pdf from "pdf-parse"使用,参见 安装( 化名) 节.
安装
选项A——直接使用此范围包
npm i @cedrugs/pdf-parse
# or
pnpm add @cedrugs/pdf-parse
# or
yarn add @cedrugs/pdf-parse
选项 B — 通过 npm 化名保留旧的导入名称
npm i pdf-parse@npm:@cedrugs/pdf-parse
现在 import pdf from "pdf-parse" 继续工作, 但决心在这个分叉.
Basic Usage — 本地文件
常见JS
const fs = require('fs');
const pdf = require('@cedrugs/pdf-parse'); // or 'pdf-parse' if using the alias
const dataBuffer = fs.readFileSync('path/to/file.pdf');
pdf(dataBuffer).then((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
// see https://mozilla.github.io/pdf.js/getting_started/
console.log(data.version);
// PDF text
console.log(data.text);
});
无害环境管理/类型脚本
import pdf from '@cedrugs/pdf-parse'; // default export supported
import { readFileSync } from 'node:fs';
const buf = readFileSync('path/to/file.pdf');
const data = await pdf(buf);
console.log(data.text);
基本用途——HTTP
您可以使用软件包 crawler-request 与 pdf-parse。 。 。 .
例外处理
const fs = require('fs');
const pdf = require('@cedrugs/pdf-parse');
const buf = fs.readFileSync('path/to/file.pdf');
pdf(buf)
.then((data) => {
// use data
})
.catch((err) => {
// handle exceptions
console.error(err);
});
类型脚本
这叉子是自己的 .d.ts无外部 @types/pdf-parse 需要帮助.
import pdf from '@cedrugs/pdf-parse';
const res = await pdf(Buffer.from('...'));
res.text; // string
res.numpages; // number
res.version; // "default" | "v1.9.426" | "v1.10.100" | "v1.10.88" | "v2.0.550"
选项
const DEFAULT_OPTIONS = {
// internal page parser callback
// set this if you need a custom output format instead of raw text
pagerender: render_page,
// max page number to parse (<= 0 means “all pages”)
max: 0,
// see https://mozilla.github.io/pdf.js/getting_started/
version: 'v1.10.100'
};
pagerender (回电)
自定义每个页面的渲染/提取方式, 如果您需要结构化的输出超过纯文本 .
max (数目)
要解析的最大页数 。 使用 0 或分析所有页面的负值.
version (字符串,pdf.js版本)
'default''v1.9.426''v1.10.100''v1.10.88''v2.0.550'
默认版本是
v1.10.100见 pdf.js 开始引导。 。 。 .
扩展- 自定义 pagerender
function render_page(pageData) {
// see https://mozilla.github.io/pdf.js/
const render_options = {
// replace all whitespace with standard spaces (0x20)
normalizeWhitespace: false,
// do not attempt to combine cedrugse-line TextItems
disableCombineTextItems: false
};
return pageData.getTextContent(render_options).then((textContent) => {
let lastY;
let text = '';
for (const item of textContent.items) {
if (lastY === item.transform[5] || !lastY) {
text += item.str;
} else {
text += '\n' + item.str;
}
lastY = item.transform[5];
}
return text;
});
}
const options = { pagerender: render_page };
const dataBuffer = require('fs').readFileSync('path/to/file.pdf');
require('@cedrugs/pdf-parse')(dataBuffer, options).then((data) => {
// use custom-formatted output
});
类似软件包
(不同的取舍:依赖性,维护,平台支持,以及输出格式
测试
npm test(运行)mocha(中文(简体) )- 见
test上游用于使用构想的目录;欢迎在此提供补充测试.
支助/问题
- 问题: 在 GitHub 上打开 https://github.com/Cedrugs/pdf-parse/issues (中文(简体) )
- 讨论/进度报告: 欢迎光临!
许可证
鸣谢
这个项目是建立在原作者的出色工作基础上的 pdf-parse 以及PDF.js团队.