我找不到任何包来做这件事。我知道PHP有大量的PDF库(比如http://www.fpdf.org/),但有什么用于Node? p>
答案 0 :(得分:14)
textract是一个很棒的lib,支持PDF,Doc,Docx等。
答案 1 :(得分:8)
您可以轻松地将一个转换为另一个,或使用例如.doc模板生成.pdf文件,但您可能希望使用现有的Web服务执行此任务。
这可以使用Livedocx的服务来完成,例如
要从节点使用此服务,请参阅node-livedocx(免责声明:我是此节点模块的作者)
答案 2 :(得分:7)
看起来有一些pdf,但我找不到任何Word。
这样的CPU绑定处理实际上并不是Node的强项(即使用节点比任何其他语言都没有获得额外的好处)。务实的方法是找到一个好的工具并从Node中使用它。
我在办公室里听到过有关docsplit http://documentcloud.github.com/docsplit/
的好消息虽然它不是Node,但您可以使用http://nodejs.org/docs/latest/api/all.html#child_process.exec
轻松地从Node调用它答案 3 :(得分:4)
我建议您查看unoconv进行初始转换,这会使用LibreOffice 或OpenOffice进行实际转换。这增加了一些开销。
我设置了一些具有所有必需品设置的工作人员,并使用请求/响应队列来处理转换...(可能需要查看kue或zmq)
一般来说,这是一个应该卸载的CPU绑定且繁重的任务... Pandoc和其他人特别提到.docx
,而不是.doc
因此它们可能也可能不是选项。
注意:我知道这个问题很老,只是想为其他人提供一个当前的答案。
答案 4 :(得分:3)
您可以将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();
我希望这会有所帮助。
答案 5 :(得分:2)
对于解析pdf文件,您可以使用pdf2json节点模块
它允许您将pdf文件转换为json以及原始文本数据。
答案 6 :(得分:2)
如果您只需要从Word文档转换,另一个不错的选择是Mammoth.js。
Mammoth旨在转换.docx文档,例如创建的文档 通过Microsoft Word,并将其转换为HTML。猛犸象旨在生产 通过使用文档中的语义信息简单而干净的HTML, 并忽略其他细节。例如,猛犸转换任何 段落的样式标题为1到h1元素,而不是 试图精确复制样式(字体,文字大小,颜色等) 标题。
.docx和.docx使用的结构之间存在很大的不匹配 HTML的结构,意味着转换不太可能 非常适合更复杂的文档。如果只是你,猛犸象的效果最好 使用样式来语义标记文档。
答案 7 :(得分:0)
以下示例说明如何使用PDF.js从PDF下载和提取文本:
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));
答案 8 :(得分:0)
您可以使用 Aspose.Words Cloud SDK for Node.js 从 DOC/DOCX、Open Office 和 PDF 中提取文本。它是付费 API,但免费计划每月提供 150 次免费 API 调用。
P.S:我是 Aspose 的开发人员布道师。
const { WordsApi, ConvertDocumentRequest } = require("asposewordscloud");
var fs = require('fs');
// Get Customer ID and Customer Key from https://dashboard.aspose.cloud/
wordsApi = new WordsApi("xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx", "xxxxxxxxxxxxxxxxxxxx");
var request = new ConvertDocumentRequest({
format: "txt",
document: fs.createReadStream("C:/Temp/02_pages.pdf"),
});
var outputFile = "C:/Temp/ConvertPDFtotxt.txt";
wordsApi.convertDocument(request).then((result) => {
console.log(result.response.statusCode);
console.log(result.body.byteLength);
fs.writeFileSync(outputFile, result.body);
}).catch(function(err) {
// Deal with an error
console.log(err);
});