2012-01-27 26 views

Trả lời

8

Bạn có thể dễ dàng chuyển đổi một thành khác hoặc sử dụng ví dụ một .doc mẫu để tạo tệp .pdf, nhưng có thể bạn sẽ muốn sử dụng dịch vụ web hiện có cho tác vụ này.

Điều này có thể được thực hiện bằng cách sử dụng dịch vụ của Livedocx ví dụ

Để sử dụng dịch vụ này từ nút, xem node-livedocx (Disclaimer: Tôi là tác giả của mô-đun nút này)

+0

sao, đây là chặt chẽ Con trai. Thực hiện tốt. – Alan

7

Có vẻ như có một số ít cho pdf, nhưng tôi không tìm thấy bất kỳ từ nào cho Word.

Xử lý ràng buộc CPU như vậy thực sự không phải là điểm mạnh của Node (nghĩa là bạn không nhận thêm lợi ích nào khi sử dụng nút để thực hiện trên bất kỳ ngôn ngữ nào khác). Một cách tiếp cận thực dụng sẽ là tìm một công cụ tốt và sử dụng nó từ Node.

Tôi đã nghe những điều tốt đẹp xung quanh văn phòng về docsplit http://documentcloud.github.com/docsplit/

Trong khi nó không phải Node, bạn có thể dễ dàng gọi nó từ Node với http://nodejs.org/docs/latest/api/all.html#child_process.exec

+0

Ưu điểm của một giải pháp JS tinh khiết là đó là nó cầm tay giữa trình duyệt và Node – sdgfsdh

11

textract là một lib tuyệt vời mà hỗ trợ các tệp PDF, Doc, Docx, v.v.

+1

Lưu ý: textract sử dụng catdoc cho các tệp '.doc' và không hoạt động trong cửa sổ. – Tracker1

+1

node-office không được phát triển tích cực (npm nói cuối cuộc đời), textract hwile đang được tích cực phát triển kể từ tháng 9 năm 2016. – steampowered

3

Tôi khuyên bạn nên xem unoconv cho chuyển đổi ban đầu của mình, điều này sử dụng LibreOffice hoặc OpenOffice cho chuyển đổi thực tế. Mà thêm một số chi phí.

tôi muốn thiết lập một vài công nhân với tất cả các thiết lập cần thiết, và sử dụng một hàng đợi request/response để xử lý việc chuyển đổi ... (có thể muốn xem xét kue hoặc)

Nói chung đây là một CPU ràng buộc và nhiệm vụ nặng nề nên được offloaded ... Pandoc và những người khác đề cập cụ thể .docx, không .doc để họ có thể hoặc có thể không được lựa chọn là tốt.


Lưu ý: Tôi biết câu hỏi này là cũ, chỉ muốn cung cấp câu trả lời hiện tại cho những người khác gặp phải vấn đề này.

2

Đối với phân tích file pdf bạn có thể sử dụng nút pdf2json mô-đun

Nó cho phép bạn chuyển đổi tập tin pdf để JSON cũng như dữ liệu văn bản thô.

2

Một tùy chọn tốt khác nếu bạn chỉ cần chuyển đổi từ tài liệu Word là Mammoth.js.

Mammoth được thiết kế để chuyển đổi tài liệu .docx, chẳng hạn như những người tạo ra bởi Microsoft Word, và chuyển đổi chúng sang HTML. Mammoth nhằm mục đích tạo ra HTML đơn giản và rõ ràng bằng cách sử dụng thông tin ngữ nghĩa trong tài liệu, và bỏ qua các chi tiết khác. Ví dụ, Mammoth chuyển đổi bất kỳ đoạn nào với kiểu Đầu đề 1 thành phần tử h1, thay vì cố gắng sao chép chính xác kiểu (phông chữ, cỡ chữ, màu sắc, v.v.) của tiêu đề.

Có sự chênh lệch lớn giữa cấu trúc được sử dụng bởi cấu trúc .docx và cấu trúc của của HTML, có nghĩa là chuyển đổi không thể là hoàn hảo cho các tài liệu phức tạp hơn. Mammoth hoạt động tốt nhất nếu bạn chỉ sử dụng các kiểu sử dụng để đánh dấu tài liệu của mình theo ngữ nghĩa.

2

bạn có thể sử dụng văn bản pdf cho tệp pdf. nó sẽ trích xuất văn bản từ một pdf thành một mảng văn bản 'khối'. Hữu ích cho việc phân tích cú pháp mờ trên văn bản pdf có cấu trúc.

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) 
}) 

cho tệp docx bạn có thể sử dụng voi ma mút, nó sẽ trích xuất văn bản từ tệp .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(); 

Tôi hy vọng điều này sẽ hữu ích.

0

Dưới đây là một ví dụ cho thấy làm thế nào để tải về và trích xuất văn bản từ PDF sử dụng 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)); 
Các vấn đề liên quan