Reputation: 478
I am searching for a JavaScript library, which can read .doc
- and .docx
- files. The focus is only on the text content. I am not interested in pictures, formulas or other special structures in MS-Word file.
It would be great if the library works with to JavaScript FileReader as shown in the code below.
function readExcel(currfile) {
var reader = new FileReader();
reader.onload = (function (_file) {
return function (e) {
//here should the magic happen
};
})(currfile);
reader.onabort = function (e) {
alert('File read canceled');
};
reader.readAsBinaryString(currfile);
}
I searched through the internet, but I could not get what I was looking for.
Upvotes: 9
Views: 25194
Reputation: 20554
You can use docxtemplater for this (even if normally, it is used for templating, it can also just get the text of the document) :
const zip = new PizZip(content);
// This will parse the template, and will throw an error if the template is
// invalid, for example, if the template is "{user" (no closing tag)
const doc = new Docxtemplater(zip, {
paragraphLoop: true,
linebreaks: true,
});
const text = doc.getFullText();
See the Doc for installation information (I'm the maintainer of this project)
However, it only handles docx, not doc
Upvotes: 7
Reputation: 424
now you can extract the text content from doc/docx without installing external dependencies.
You can use the node library called any-text
Currently, it supports a number of file extensions like PDF, XLSX, XLS, CSV etc
Usage is very simple:
npm i -D any-text
getText
method to read the text contentvar reader = require('any-text');
reader.getText(`path-to-file`).then(function (data) {
console.log(data);
});
async/await
notationvar reader = require('any-text');
const text = await reader.getText(`path-to-file`);
console.log(text);
var reader = require('any-text');
const chai = require('chai');
const expect = chai.expect;
describe('file reader checks', () => {
it('check docx file content', async () => {
expect(
await reader.getText(`${process.cwd()}/test/files/dummy.doc`)
).to.contains('Lorem ipsum');
});
});
I hope it will help!
Upvotes: 0