我需要仅使用客户端 JavaScript 提取 PDF 的文本。
我有这个 JSFiddle http://jsfiddle.net/go279m0h/
document.getElementById('file').addEventListener('change', readFile, false);
/** This works
* Extract text from PDFs with PDF.js
* https://mozilla.github.io/pdf.js/getting_started/
*/
pdfToText = function(data) {
PDFJS.workerSrc = "{{ url_for('static', filename='js/pdf.worker.js') }}";
PDFJS.cMapUrl = "{{ url_for('static', filename='cmaps') }}";
PDFJS.cMapPacked = true;
return PDFJS.getDocument(data).then(function(pdf) {
var pages = [];
for (var i = 0; i < pdf.numPages; i++) {
pages.push(i);
}
return Promise.all(pages.map(function(pageNumber) {
return pdf.getPage(pageNumber + 1).then(function(page) {
return page.getTextContent().then(function(textContent) {
return textContent.items.map(function(item) {
return item.str;
}).join(' ');
});
});
})).then(function(pages) {
return pages.join("\r\n");
});
});
}
// this function should get the text of a pdf file and print it to the console.
function readFile (evt) {
var files = evt.target.files;
var file = files[0];
// following from https://stackoverflow.com/questions/1554280/extract-text-from-pdf-in-javascript
// using PDFJS function
self.pdfToText(files[0].path).then(function(result) {
console.log("PDF done!", result);
})
/*
var reader = new FileReader();
reader.onload = function() {
console.log(this.result);
}
//reader.readAsText(file)
*/
}
从 PDF 中获取文本的 PDF JS 函数目前适用于服务器端文件路径,但我无法让它接受用户上传文件的 files[0] 参数。
运行此程序时不断收到的错误是“未捕获的错误:getDocument 中的参数无效,需要 Uint8Array、字符串或参数对象”
底部的第二个选项是我获得该功能的地方,我可以将其用于文本提取。 用Javascript从pdf中提取文本