Как распарсить pdf библиотекой pdfreader
Как можно открыть pdf файл, который находится на сервере? Никак не могу сделать это, нашел библиотеку pdfreader, но почему-то не хочет работать.
import { PdfReader } from "pdfreader";
new PdfReader().parseFileItems("https://site/file.pdf", (err, item) => {
if (err) console.error("error:", err);
else if (!item) console.warn("end of file");
else if (item.text) console.log(item.text);
});
Error: Load Failed: https://site/file.pdf - Error: ENOENT: no such file or directory, stat 'https://site/file.pdf'
at Object.error [as p2jerror] (eval at <anonymous> (file:///C:/Users/proto/OneDrive/Desktop/rosbilet/node_modules/pdf2json/lib/pdf.js:66:1), <anonymous>:195:9)
at PDFParser.loadPDF (file:///C:/Users/proto/OneDrive/Desktop/rosbilet/node_modules/pdf2json/pdfparser.js:128:22)
at PdfReader.parseFileItems (file:///C:/Users/proto/OneDrive/Desktop/rosbilet/node_modules/pdfreader/PdfReader.js:62:13)
at file:///C:/Users/proto/OneDrive/Desktop/rosbilet/index.js:5:17
at ModuleJob.run (node:internal/modules/esm/module_job:194:25)
Ответы (1 шт):
Автор решения: nörbörnën
→ Ссылка
Если ваш целевой файл не локальный, вам нужно скачать его и преобразовать в понятный для pdfreader формат:
// @ts-check
import { PdfReader } from 'pdfreader';
const TEST_SAMPLE_PDF =
'https://raw.githubusercontent.com/adrienjoly/npm-pdfreader/master/test/sample.pdf';
const res = await fetch(TEST_SAMPLE_PDF);
if (!res.ok) {
console.error(`
status: ${res.status}, ${res.statusText}
body: ${await res.text().catch(() => '...fail res.text()...')}
`);
process.exit(1);
}
const buf = await res.arrayBuffer();
new PdfReader(null)
.parseBuffer(
Buffer.from(buf),
(err, item) => {
if (err) console.error("error:", err);
else if (!item) console.warn("end of buffer");
else if (item.text) console.log(item.text);
}
);
Warning: Setting up fake worker.
Hello "world"
Value:
4
c1
c2
c3
1
2.3
hello
world
Values:
1
2
3
end of buffer
node v21.6.1