Я не могу найти пакеты для этого. Я знаю, что в PHP есть тонна библиотек для PDF-файлов (например, http://www.fpdf.org/), но что-нибудь для узла?Могу ли я читать PDF или Word Docs с помощью Node.js?
ответ
Вы можете легко конвертировать из одного в другой, или использовать, например, .doc для создания файла .pdf, но вы, вероятно, захотите использовать существующий веб-сервис для этой задачи.
Это может быть сделано с помощью услуги Livedocx, например
Чтобы воспользоваться этой услугой от узла см node-livedocx (Отказ от ответственности: я являюсь автором этого узлового модуля)
Похоже, что есть несколько для pdf, но я не нашел для Word.
Обработка пересылки процессора, как это ни в коем случае не является сильной точкой узла (т. Е. Вы не получаете дополнительных преимуществ, используя узел, чтобы сделать это на любом другом языке). Прагматичным подходом было бы найти хороший инструмент и использовать его у Узла.
Я слышал хорошие вещи вокруг офиса о docsplit http://documentcloud.github.com/docsplit/
Хотя это не узел, вы можете легко вызвать его из узла с http://nodejs.org/docs/latest/api/all.html#child_process.exec
Преимущества чистого раствора JS является то, что это портативным между браузером и Node – sdgfsdh
textract является большой Lib, что поддерживает файлы PDF, Doc, Docx и т. д.
Примечание: textract использует catdoc для файлов '.doc' и не работает в окнах. – Tracker1
Узел-офис не находится в активной разработке (npm говорит о конце жизни), hwile textract активно развивается по состоянию на сентябрь 2016 года. – steampowered
Я бы предложил посмотреть на unoconv для вашего первоначального преобразования, это использует LibreOffice или OpenOffice для фактического преобразования. Что добавляет некоторые накладные расходы.
Я бы настроить несколько рабочих со всей установки необходимостей, и использовать очереди запросов/ответов для обработки преобразования ... (можете посмотреть в kue или)
В целом это CPU и тяжелая задача, которая должна быть выгружена ... Pandoc и другие конкретно упоминают .docx
, а не .doc
, так что они могут или не могут быть вариантами.
Примечание: Я знаю, что этот вопрос старый, просто хотел предоставить текущий ответ для других, сталкивающихся с этим.
Для разбора файлов PDF можно использовать модуль
pdf2json узла Это позволяет конвертировать PDF-файл в формате JSON, а также сырья и текстовых данных.
Еще один хороший вариант, если вам нужно конвертировать только документы Word, это Mammoth.js.
Mammoth предназначен для преобразования документов .docx, таких как созданные , Microsoft Word и преобразования их в HTML. Мамонт нацелен на создание простого и чистого HTML, используя семантическую информацию в документе и игнорируя другие сведения. Например, мамонт преобразует любой абзац со стилем Заголовок от 1 до h1, а не , пытаясь точно скопировать стиль (шрифт, размер текста, цвет и т. Д.) заголовка.
Существует большое несоответствие между структурой, используемой .docx, и структурой HTML-кода , что означает, что преобразование вряд ли будет идеальным для более сложных документов. Мамонт работает лучше всего, если вы используете только стили для семантической маркировки своего документа.
Вы можете использовать pdf-текст для PDF-файлов. он будет извлекать текст из pdf в массив текстовых «кусков». Полезно для выполнения нечеткого разбора по структурированному pdf-тексту.
var pdfText = require('pdf-text')
var pathToPdf = __dirname + "/info.pdf"
pdfText(pathToPdf, function(err, chunks) {
//chunks is an array of strings
//loosely corresponding to text objects within the pdf
//for a more concrete example, view the test file in this repo
})
var fs = require('fs')
var buffer = fs.readFileSync(pathToPdf)
pdfText(buffer, function(err, chunks) {
console.log(chunks)
})
для файлов docx вы можете использовать мамонта, он будет извлекать текст из файлов .docx.
var mammoth = require("mammoth");
mammoth.extractRawText({path: "./doc.docx"})
.then(function(result){
var text = result.value; // The raw text
console.log(text);
var messages = result.messages;
})
.done();
Надеюсь, это поможет.
Ниже приведен пример, показывающий, как загружать и извлекать текст из PDF с помощью PDF.js:
import _ from 'lodash';
import superagent from 'superagent';
import pdf from 'pdfjs-dist';
const url = 'http://unec.edu.az/application/uploads/2014/12/pdf-sample.pdf';
const main = async() => {
const response = await superagent.get(url).buffer();
const data = response.body;
const doc = await pdf.getDocument({ data });
for (const i of _.range(doc.numPages)) {
const page = await doc.getPage(i + 1);
const content = await page.getTextContent();
for (const { str } of content.items) {
console.log(str);
}
}
};
main().catch(error => console.error(error));
Ладно, это плотно сын. Красиво сделано. – Alan