1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
exports.read = read;
var promises = require("../promises");
var unzip = require("../unzip");
var readXmlFromZipFile = require("./office-xml-reader").readXmlFromZipFile;
var documents = require("../documents");
var DocumentXmlReader = require("./document-xml-reader").DocumentXmlReader;
var relationshipsReader = require("./relationships-reader");
var contentTypesReader = require("./content-types-reader");
var numberingXml = require("./numbering-xml");
var stylesReader = require("./styles-reader");
var footnotesReader = require("./footnotes-reader");
function read(options) {
var docxFile = unzip.openZip(options);
return promises.when(docxFile).then(function(docxFile) {
return promises.all([
readRelationshipsFromZipFile(docxFile),
readContentTypesFromZipFile(docxFile),
readNumberingFromZipFile(docxFile),
readStylesFromZipFile(docxFile),
readFootnotesFromZipFile(docxFile),
readXmlFromZipFile(docxFile, "word/document.xml"),
]).spread(function(relationships, contentTypes, numbering, styles, footnotes, documentXml) {
var reader = new DocumentXmlReader({
relationships: relationships,
contentTypes: contentTypes,
docxFile: docxFile,
numbering: numbering,
styles: styles,
footnotes: footnotes
});
return reader.convertXmlToDocument(documentXml);
});
});
}
function xmlFileReader(options) {
return function(zipFile) {
return readXmlFromZipFile(zipFile, options.filename)
.then(function(element) {
return element ? options.readElement(element) : options.defaultValue;
});
};
}
var readContentTypesFromZipFile = xmlFileReader({
filename: "[Content_Types].xml",
readElement: contentTypesReader.readContentTypesFromXml,
defaultValue: contentTypesReader.defaultContentTypes
});
var readRelationshipsFromZipFile = xmlFileReader({
filename: "word/_rels/document.xml.rels",
readElement: relationshipsReader.readRelationships,
defaultValue: {}
});
var readNumberingFromZipFile = xmlFileReader({
filename: "word/numbering.xml",
readElement: numberingXml.readNumberingXml,
defaultValue: numberingXml.defaultNumbering
});
var readStylesFromZipFile = xmlFileReader({
filename: "word/styles.xml",
readElement: stylesReader.readStylesXml,
defaultValue: stylesReader.defaultStyles
});
var readFootnotesFromZipFile = xmlFileReader({
filename: "word/footnotes.xml",
readElement: footnotesReader.readFootnotesXml,
defaultValue: undefined
});
|