2012-01-27 2 views

ответ

8

Вы можете легко конвертировать из одного в другой, или использовать, например, .doc для создания файла .pdf, но вы, вероятно, захотите использовать существующий веб-сервис для этой задачи.

Это может быть сделано с помощью услуги Livedocx, например

Чтобы воспользоваться этой услугой от узла см node-livedocx (Отказ от ответственности: я являюсь автором этого узлового модуля)

+0

Ладно, это плотно сын. Красиво сделано. – Alan

7

Похоже, что есть несколько для pdf, но я не нашел для Word.

Обработка пересылки процессора, как это ни в коем случае не является сильной точкой узла (т. Е. Вы не получаете дополнительных преимуществ, используя узел, чтобы сделать это на любом другом языке). Прагматичным подходом было бы найти хороший инструмент и использовать его у Узла.

Я слышал хорошие вещи вокруг офиса о docsplit http://documentcloud.github.com/docsplit/

Хотя это не узел, вы можете легко вызвать его из узла с http://nodejs.org/docs/latest/api/all.html#child_process.exec

+0

Преимущества чистого раствора JS является то, что это портативным между браузером и Node – sdgfsdh

11

textract является большой Lib, что поддерживает файлы PDF, Doc, Docx и т. д.

+1

Примечание: textract использует catdoc для файлов '.doc' и не работает в окнах. – Tracker1

+1

Узел-офис не находится в активной разработке (npm говорит о конце жизни), hwile textract активно развивается по состоянию на сентябрь 2016 года. – steampowered

3

Я бы предложил посмотреть на unoconv для вашего первоначального преобразования, это использует LibreOffice или OpenOffice для фактического преобразования. Что добавляет некоторые накладные расходы.

Я бы настроить несколько рабочих со всей установки необходимостей, и использовать очереди запросов/ответов для обработки преобразования ... (можете посмотреть в kue или)

В целом это CPU и тяжелая задача, которая должна быть выгружена ... Pandoc и другие конкретно упоминают .docx, а не .doc, так что они могут или не могут быть вариантами.


Примечание: Я знаю, что этот вопрос старый, просто хотел предоставить текущий ответ для других, сталкивающихся с этим.

2

Для разбора файлов PDF можно использовать модуль

pdf2json узла Это позволяет конвертировать PDF-файл в формате JSON, а также сырья и текстовых данных.

2

Еще один хороший вариант, если вам нужно конвертировать только документы Word, это Mammoth.js.

Mammoth предназначен для преобразования документов .docx, таких как созданные , Microsoft Word и преобразования их в HTML. Мамонт нацелен на создание простого и чистого HTML, используя семантическую информацию в документе и игнорируя другие сведения. Например, мамонт преобразует любой абзац со стилем Заголовок от 1 до h1, а не , пытаясь точно скопировать стиль (шрифт, размер текста, цвет и т. Д.) заголовка.

Существует большое несоответствие между структурой, используемой .docx, и структурой HTML-кода , что означает, что преобразование вряд ли будет идеальным для более сложных документов. Мамонт работает лучше всего, если вы используете только стили для семантической маркировки своего документа.

2

Вы можете использовать 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(); 

Надеюсь, это поможет.

0

Ниже приведен пример, показывающий, как загружать и извлекать текст из 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));