docxmlater 9.5.3 → 9.5.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/Document.d.ts +0 -1
- package/dist/core/Document.d.ts.map +1 -1
- package/dist/core/Document.js +2 -23
- package/dist/core/Document.js.map +1 -1
- package/dist/core/DocumentParser.d.ts +0 -4
- package/dist/core/DocumentParser.d.ts.map +1 -1
- package/dist/core/DocumentParser.js +36 -203
- package/dist/core/DocumentParser.js.map +1 -1
- package/dist/elements/Table.d.ts +0 -11
- package/dist/elements/Table.d.ts.map +1 -1
- package/dist/elements/Table.js +2 -33
- package/dist/elements/Table.js.map +1 -1
- package/dist/formatting/NumberingLevel.d.ts.map +1 -1
- package/dist/formatting/NumberingLevel.js +7 -2
- package/dist/formatting/NumberingLevel.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -36,11 +36,7 @@ export declare class DocumentParser {
|
|
|
36
36
|
}>;
|
|
37
37
|
private parseBodyElements;
|
|
38
38
|
private extractBodyLevelBookmarkEnds;
|
|
39
|
-
private extractBodyLevelBookmarkStarts;
|
|
40
39
|
private extractBookmarkEndsFromContent;
|
|
41
|
-
private extractBodyDelBlockXml;
|
|
42
|
-
private extractBookmarksFromBodyDel;
|
|
43
|
-
private extractInterRowElements;
|
|
44
40
|
private findNextTag;
|
|
45
41
|
private findNextTopLevelTag;
|
|
46
42
|
private countUnclosedTags;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DocumentParser.d.ts","sourceRoot":"","sources":["../../src/core/DocumentParser.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAM9C,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,OAAO,EAAE,SAAS,EAAyC,MAAM,uBAAuB,CAAC;AAGzF,OAAO,EAEL,OAAO,EAGR,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAG1C,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAE5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,KAAK,EAA8B,MAAM,qBAAqB,CAAC;AAexE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAK5D,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,KAAK,CAAC;CACd;AAKD,KAAK,WAAW,GACZ,SAAS,GACT,KAAK,GACL,sBAAsB,GACtB,qBAAqB,CAAC;AAK1B,qBAAa,cAAc;IACzB,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,aAAa,CAAU;IAC/B,OAAO,CAAC,eAAe,CAAgC;gBAE3C,aAAa,GAAE,OAAe;IAO1C,cAAc,IAAI,UAAU,EAAE;IAO9B,gBAAgB,IAAI,IAAI;IAWlB,aAAa,CACjB,UAAU,EAAE,UAAU,EACtB,mBAAmB,EAAE,mBAAmB,EACxC,YAAY,EAAE,YAAY,EAC1B,eAAe,CAAC,EAAE,eAAe,GAChC,OAAO,CAAC;QACT,YAAY,EAAE,WAAW,EAAE,CAAC;QAC5B,UAAU,EAAE,kBAAkB,CAAC;QAC/B,mBAAmB,EAAE,mBAAmB,CAAC;QACzC,MAAM,EAAE,KAAK,EAAE,CAAC;QAChB,kBAAkB,EAAE,iBAAiB,EAAE,CAAC;QACxC,kBAAkB,EAAE,iBAAiB,EAAE,CAAC;QACxC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;QACxB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACpC,CAAC;YAyFY,iBAAiB;
|
|
1
|
+
{"version":3,"file":"DocumentParser.d.ts","sourceRoot":"","sources":["../../src/core/DocumentParser.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAM9C,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,OAAO,EAAE,SAAS,EAAyC,MAAM,uBAAuB,CAAC;AAGzF,OAAO,EAEL,OAAO,EAGR,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAG1C,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAE5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,KAAK,EAA8B,MAAM,qBAAqB,CAAC;AAexE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAK5D,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,KAAK,CAAC;CACd;AAKD,KAAK,WAAW,GACZ,SAAS,GACT,KAAK,GACL,sBAAsB,GACtB,qBAAqB,CAAC;AAK1B,qBAAa,cAAc;IACzB,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,aAAa,CAAU;IAC/B,OAAO,CAAC,eAAe,CAAgC;gBAE3C,aAAa,GAAE,OAAe;IAO1C,cAAc,IAAI,UAAU,EAAE;IAO9B,gBAAgB,IAAI,IAAI;IAWlB,aAAa,CACjB,UAAU,EAAE,UAAU,EACtB,mBAAmB,EAAE,mBAAmB,EACxC,YAAY,EAAE,YAAY,EAC1B,eAAe,CAAC,EAAE,eAAe,GAChC,OAAO,CAAC;QACT,YAAY,EAAE,WAAW,EAAE,CAAC;QAC5B,UAAU,EAAE,kBAAkB,CAAC;QAC/B,mBAAmB,EAAE,mBAAmB,CAAC;QACzC,MAAM,EAAE,KAAK,EAAE,CAAC;QAChB,kBAAkB,EAAE,iBAAiB,EAAE,CAAC;QACxC,kBAAkB,EAAE,iBAAiB,EAAE,CAAC;QACxC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;QACxB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACpC,CAAC;YAyFY,iBAAiB;IAyM/B,OAAO,CAAC,4BAA4B;IAkBpC,OAAO,CAAC,8BAA8B;IA6BtC,OAAO,CAAC,WAAW;IAmCnB,OAAO,CAAC,mBAAmB;IAqC3B,OAAO,CAAC,iBAAiB;IAiDzB,OAAO,CAAC,qBAAqB;IAiB7B,OAAO,CAAC,mBAAmB;IAuC3B,OAAO,CAAC,kBAAkB;IAyC1B,OAAO,CAAC,oBAAoB;IAuB5B,OAAO,CAAC,qBAAqB;YAwEf,uBAAuB;YAuFvB,6BAA6B;YA4X7B,oBAAoB;IAwKlC,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,EAAE;IAqBhD,OAAO,CAAC,mBAAmB;IA6D3B,OAAO,CAAC,kBAAkB;IAmD1B,OAAO,CAAC,gBAAgB;YA8BV,wBAAwB;IAoLtC,OAAO,CAAC,kCAAkC;IA0gB1C,OAAO,CAAC,qBAAqB;IAwW7B,OAAO,CAAC,4BAA4B;IAiHpC,OAAO,CAAC,oBAAoB;IAiC5B,OAAO,CAAC,0BAA0B;IAgJlC,OAAO,CAAC,wCAAwC;IAkHhD,OAAO,CAAC,0BAA0B;IAoHlC,OAAO,CAAC,kBAAkB;IAiT1B,OAAO,CAAC,wBAAwB;IAwNhC,OAAO,CAAC,0BAA0B;IA+IlC,OAAO,CAAC,8BAA8B;IAatC,OAAO,CAAC,0BAA0B;IAwClC,OAAO,CAAC,4BAA4B;YAyctB,sBAAsB;IA6NpC,OAAO,CAAC,iBAAiB;IA4CzB,OAAO,CAAC,kBAAkB;IA6D1B,OAAO,CAAC,cAAc;IAmBtB,OAAO,CAAC,iBAAiB;YAuBX,oBAAoB;IA0HlC,OAAO,CAAC,8BAA8B;YA2JxB,uBAAuB;IAoErC,OAAO,CAAC,iCAAiC;IAyDzC,OAAO,CAAC,sCAAsC;IA4D9C,OAAO,CAAC,2BAA2B;YAgCrB,wBAAwB;IA8RtC,OAAO,CAAC,yBAAyB;IA0GjC,OAAO,CAAC,UAAU;IAmBlB,OAAO,CAAC,cAAc;YAsCR,kBAAkB;IAsPhC,OAAO,CAAC,6BAA6B;IAwCrC,OAAO,CAAC,4BAA4B;IA6JpC,OAAO,CAAC,4BAA4B;IA6FpC,OAAO,CAAC,sBAAsB;IAmI9B,OAAO,CAAC,cAAc;IA2BtB,OAAO,CAAC,WAAW;IAgHnB,OAAO,CAAC,kBAAkB;IAoB1B,OAAO,CAAC,eAAe;IAuEvB,OAAO,CAAC,qBAAqB;IA8D7B,OAAO,CAAC,WAAW;IA8CnB,OAAO,CAAC,cAAc;IAqEtB,OAAO,CAAC,sBAAsB;IAoP9B,OAAO,CAAC,UAAU;IAwMlB,OAAO,CAAC,+BAA+B;IAwIvC,OAAO,CAAC,yBAAyB;IA2JjC,OAAO,CAAC,yBAAyB;IA+EjC,OAAO,CAAC,2BAA2B;IAqEnC,OAAO,CAAC,+BAA+B;IAmDvC,OAAO,CAAC,8BAA8B;IA8CtC,OAAO,CAAC,iCAAiC;IA6FzC,OAAO,CAAC,mBAAmB;IAqF3B,OAAO,CAAC,mBAAmB;IAqB3B,OAAO,CAAC,uBAAuB;IA6B/B,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IA+BzE,MAAM,CAAC,SAAS,CACd,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GACjB,OAAO;IAwBV,MAAM,CAAC,gBAAgB,CACrB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,MAAM,GACf,KAAK,CAAC;QACP,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IAmFF,OAAO,CAAC,eAAe;IA4BjB,sBAAsB,CAC1B,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,OAAO,GAAG,IAAI,EACvB,mBAAmB,EAAE,mBAAmB,EACxC,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC;QACT,OAAO,EAAE,KAAK,CAAC;YACb,MAAM,EAAE,OAAO,oBAAoB,EAAE,MAAM,CAAC;YAC5C,cAAc,EAAE,MAAM,CAAC;YACvB,QAAQ,EAAE,MAAM,CAAC;SAClB,CAAC,CAAC;QACH,OAAO,EAAE,KAAK,CAAC;YACb,MAAM,EAAE,OAAO,oBAAoB,EAAE,MAAM,CAAC;YAC5C,cAAc,EAAE,MAAM,CAAC;YACvB,QAAQ,EAAE,MAAM,CAAC;SAClB,CAAC,CAAC;KACJ,CAAC;YA4FY,WAAW;YA6DX,WAAW;CAmD1B"}
|
|
@@ -133,8 +133,6 @@ class DocumentParser {
|
|
|
133
133
|
if (!bodyContent) {
|
|
134
134
|
return bodyElements;
|
|
135
135
|
}
|
|
136
|
-
let pendingBookmarkStarts = [];
|
|
137
|
-
let pendingBookmarkEnds = [];
|
|
138
136
|
let pos = 0;
|
|
139
137
|
while (pos < bodyContent.length) {
|
|
140
138
|
const nextP = this.findNextTopLevelTag(bodyContent, "w:p", pos);
|
|
@@ -152,72 +150,35 @@ class DocumentParser {
|
|
|
152
150
|
candidates.sort((a, b) => a.pos - b.pos);
|
|
153
151
|
const next = candidates[0];
|
|
154
152
|
if (next) {
|
|
155
|
-
if (next.pos > pos) {
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
prevElement.addBookmarkEnd(bookmark);
|
|
163
|
-
}
|
|
153
|
+
if (bodyElements.length > 0 && next.pos > pos) {
|
|
154
|
+
const bookmarkEnds = this.extractBodyLevelBookmarkEnds(bodyContent, pos, next.pos);
|
|
155
|
+
if (bookmarkEnds.length > 0) {
|
|
156
|
+
const prevElement = bodyElements[bodyElements.length - 1];
|
|
157
|
+
if (prevElement instanceof Paragraph_1.Paragraph) {
|
|
158
|
+
for (const bookmark of bookmarkEnds) {
|
|
159
|
+
prevElement.addBookmarkEnd(bookmark);
|
|
164
160
|
}
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
161
|
+
}
|
|
162
|
+
else if (prevElement instanceof Table_1.Table) {
|
|
163
|
+
const rows = prevElement.getRows();
|
|
164
|
+
const lastRow = rows[rows.length - 1];
|
|
165
|
+
if (lastRow) {
|
|
166
|
+
const cells = lastRow.getCells();
|
|
167
|
+
const lastCell = cells[cells.length - 1];
|
|
168
|
+
if (lastCell) {
|
|
169
|
+
const cellParas = lastCell.getParagraphs();
|
|
170
|
+
const lastPara = cellParas[cellParas.length - 1];
|
|
171
|
+
if (lastPara) {
|
|
172
|
+
for (const bookmark of bookmarkEnds) {
|
|
173
|
+
lastPara.addBookmarkEnd(bookmark);
|
|
178
174
|
}
|
|
179
175
|
}
|
|
180
176
|
}
|
|
181
177
|
}
|
|
182
178
|
}
|
|
183
179
|
}
|
|
184
|
-
const newBookmarkStarts = this.extractBodyLevelBookmarkStarts(bodyContent, pos, next.pos);
|
|
185
|
-
pendingBookmarkStarts.push(...newBookmarkStarts);
|
|
186
180
|
}
|
|
187
181
|
if (this.isPositionInsideDel(bodyContent, next.pos)) {
|
|
188
|
-
const delBlockXml = this.extractBodyDelBlockXml(bodyContent, next.pos);
|
|
189
|
-
if (delBlockXml) {
|
|
190
|
-
const delBookmarks = this.extractBookmarksFromBodyDel(delBlockXml);
|
|
191
|
-
pendingBookmarkStarts.push(...delBookmarks.bookmarkStarts);
|
|
192
|
-
if (delBookmarks.bookmarkEnds.length > 0 && bodyElements.length > 0) {
|
|
193
|
-
const prevElement = bodyElements[bodyElements.length - 1];
|
|
194
|
-
if (prevElement instanceof Paragraph_1.Paragraph) {
|
|
195
|
-
for (const bookmark of delBookmarks.bookmarkEnds) {
|
|
196
|
-
prevElement.addBookmarkEnd(bookmark);
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
else if (prevElement instanceof Table_1.Table) {
|
|
200
|
-
const rows = prevElement.getRows();
|
|
201
|
-
const lastRow = rows[rows.length - 1];
|
|
202
|
-
if (lastRow) {
|
|
203
|
-
const cells = lastRow.getCells();
|
|
204
|
-
const lastCell = cells[cells.length - 1];
|
|
205
|
-
if (lastCell) {
|
|
206
|
-
const cellParas = lastCell.getParagraphs();
|
|
207
|
-
const lastPara = cellParas[cellParas.length - 1];
|
|
208
|
-
if (lastPara) {
|
|
209
|
-
for (const bookmark of delBookmarks.bookmarkEnds) {
|
|
210
|
-
lastPara.addBookmarkEnd(bookmark);
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
else if (delBookmarks.bookmarkEnds.length > 0) {
|
|
218
|
-
pendingBookmarkEnds.push(...delBookmarks.bookmarkEnds);
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
182
|
const delEndPos = this.findDelEndPosition(bodyContent, next.pos);
|
|
222
183
|
if (delEndPos > 0) {
|
|
223
184
|
pos = delEndPos;
|
|
@@ -231,17 +192,8 @@ class DocumentParser {
|
|
|
231
192
|
const elementXml = this.extractSingleElement(bodyContent, "w:p", next.pos);
|
|
232
193
|
if (elementXml) {
|
|
233
194
|
const paragraph = await this.parseParagraphWithOrder(elementXml, relationshipManager, zipHandler, imageManager);
|
|
234
|
-
if (paragraph)
|
|
235
|
-
for (const bookmark of pendingBookmarkStarts) {
|
|
236
|
-
paragraph.addBookmarkStart(bookmark);
|
|
237
|
-
}
|
|
238
|
-
pendingBookmarkStarts = [];
|
|
239
|
-
for (const bookmark of pendingBookmarkEnds) {
|
|
240
|
-
paragraph.addBookmarkEnd(bookmark);
|
|
241
|
-
}
|
|
242
|
-
pendingBookmarkEnds = [];
|
|
195
|
+
if (paragraph)
|
|
243
196
|
bodyElements.push(paragraph);
|
|
244
|
-
}
|
|
245
197
|
pos = next.pos + elementXml.length;
|
|
246
198
|
}
|
|
247
199
|
else {
|
|
@@ -255,31 +207,8 @@ class DocumentParser {
|
|
|
255
207
|
trimValues: false,
|
|
256
208
|
});
|
|
257
209
|
const table = await this.parseTableFromObject(parsed["w:tbl"], relationshipManager, zipHandler, imageManager, elementXml);
|
|
258
|
-
if (table)
|
|
259
|
-
if (pendingBookmarkStarts.length > 0 || pendingBookmarkEnds.length > 0) {
|
|
260
|
-
const rows = table.getRows();
|
|
261
|
-
const firstRow = rows[0];
|
|
262
|
-
if (firstRow) {
|
|
263
|
-
const cells = firstRow.getCells();
|
|
264
|
-
const firstCell = cells[0];
|
|
265
|
-
if (firstCell) {
|
|
266
|
-
const cellParas = firstCell.getParagraphs();
|
|
267
|
-
const firstPara = cellParas[0];
|
|
268
|
-
if (firstPara) {
|
|
269
|
-
for (const bookmark of pendingBookmarkStarts) {
|
|
270
|
-
firstPara.addBookmarkStart(bookmark);
|
|
271
|
-
}
|
|
272
|
-
for (const bookmark of pendingBookmarkEnds) {
|
|
273
|
-
firstPara.addBookmarkEnd(bookmark);
|
|
274
|
-
}
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
|
-
pendingBookmarkStarts = [];
|
|
280
|
-
pendingBookmarkEnds = [];
|
|
210
|
+
if (table)
|
|
281
211
|
bodyElements.push(table);
|
|
282
|
-
}
|
|
283
212
|
pos = next.pos + elementXml.length;
|
|
284
213
|
}
|
|
285
214
|
else {
|
|
@@ -293,11 +222,8 @@ class DocumentParser {
|
|
|
293
222
|
trimValues: false,
|
|
294
223
|
});
|
|
295
224
|
const sdt = await this.parseSDTFromObject(parsed["w:sdt"], relationshipManager, zipHandler, imageManager);
|
|
296
|
-
if (sdt)
|
|
297
|
-
pendingBookmarkStarts = [];
|
|
298
|
-
pendingBookmarkEnds = [];
|
|
225
|
+
if (sdt)
|
|
299
226
|
bodyElements.push(sdt);
|
|
300
|
-
}
|
|
301
227
|
pos = next.pos + elementXml.length;
|
|
302
228
|
}
|
|
303
229
|
else {
|
|
@@ -344,27 +270,6 @@ class DocumentParser {
|
|
|
344
270
|
: content.slice(startPos, endPos);
|
|
345
271
|
return this.extractBookmarkEndsFromContent(searchContent);
|
|
346
272
|
}
|
|
347
|
-
extractBodyLevelBookmarkStarts(content, startPos, endPos) {
|
|
348
|
-
const searchContent = endPos === -1 ? content.slice(startPos) : content.slice(startPos, endPos);
|
|
349
|
-
const bookmarks = [];
|
|
350
|
-
const bookmarkStartXmls = XMLParser_1.XMLParser.extractElements(searchContent, "w:bookmarkStart");
|
|
351
|
-
for (const bookmarkStartXml of bookmarkStartXmls) {
|
|
352
|
-
const idAttr = XMLParser_1.XMLParser.extractAttribute(bookmarkStartXml, "w:id");
|
|
353
|
-
const nameAttr = XMLParser_1.XMLParser.extractAttribute(bookmarkStartXml, "w:name");
|
|
354
|
-
if (idAttr) {
|
|
355
|
-
const id = parseInt(idAttr, 10);
|
|
356
|
-
if (!isNaN(id)) {
|
|
357
|
-
const bookmark = new Bookmark_1.Bookmark({
|
|
358
|
-
name: nameAttr || `_bookmark_${id}`,
|
|
359
|
-
id: id,
|
|
360
|
-
skipNormalization: true,
|
|
361
|
-
});
|
|
362
|
-
bookmarks.push(bookmark);
|
|
363
|
-
}
|
|
364
|
-
}
|
|
365
|
-
}
|
|
366
|
-
return bookmarks;
|
|
367
|
-
}
|
|
368
273
|
extractBookmarkEndsFromContent(content) {
|
|
369
274
|
const bookmarks = [];
|
|
370
275
|
const bookmarkEndXmls = XMLParser_1.XMLParser.extractElements(content, "w:bookmarkEnd");
|
|
@@ -384,88 +289,6 @@ class DocumentParser {
|
|
|
384
289
|
}
|
|
385
290
|
return bookmarks;
|
|
386
291
|
}
|
|
387
|
-
extractBodyDelBlockXml(content, insidePosition) {
|
|
388
|
-
const beforeContent = content.substring(0, insidePosition);
|
|
389
|
-
const lastDelOpen = beforeContent.lastIndexOf("<w:del");
|
|
390
|
-
if (lastDelOpen === -1)
|
|
391
|
-
return "";
|
|
392
|
-
const endPos = this.findDelEndPosition(content, lastDelOpen);
|
|
393
|
-
if (endPos === -1)
|
|
394
|
-
return "";
|
|
395
|
-
return content.substring(lastDelOpen, endPos);
|
|
396
|
-
}
|
|
397
|
-
extractBookmarksFromBodyDel(delBlockXml) {
|
|
398
|
-
const bookmarkStarts = [];
|
|
399
|
-
const bookmarkEnds = [];
|
|
400
|
-
const bookmarkStartXmls = XMLParser_1.XMLParser.extractElements(delBlockXml, "w:bookmarkStart");
|
|
401
|
-
for (const bookmarkXml of bookmarkStartXmls) {
|
|
402
|
-
const idAttr = XMLParser_1.XMLParser.extractAttribute(bookmarkXml, "w:id");
|
|
403
|
-
const nameAttr = XMLParser_1.XMLParser.extractAttribute(bookmarkXml, "w:name");
|
|
404
|
-
if (idAttr) {
|
|
405
|
-
const id = parseInt(idAttr, 10);
|
|
406
|
-
if (!isNaN(id)) {
|
|
407
|
-
bookmarkStarts.push(new Bookmark_1.Bookmark({
|
|
408
|
-
name: nameAttr || `_bookmark_${id}`,
|
|
409
|
-
id: id,
|
|
410
|
-
skipNormalization: true,
|
|
411
|
-
}));
|
|
412
|
-
}
|
|
413
|
-
}
|
|
414
|
-
}
|
|
415
|
-
const bookmarkEndXmls = XMLParser_1.XMLParser.extractElements(delBlockXml, "w:bookmarkEnd");
|
|
416
|
-
for (const bookmarkXml of bookmarkEndXmls) {
|
|
417
|
-
const idAttr = XMLParser_1.XMLParser.extractAttribute(bookmarkXml, "w:id");
|
|
418
|
-
if (idAttr) {
|
|
419
|
-
const id = parseInt(idAttr, 10);
|
|
420
|
-
if (!isNaN(id)) {
|
|
421
|
-
bookmarkEnds.push(new Bookmark_1.Bookmark({
|
|
422
|
-
name: `_end_${id}`,
|
|
423
|
-
id,
|
|
424
|
-
skipNormalization: true,
|
|
425
|
-
}));
|
|
426
|
-
}
|
|
427
|
-
}
|
|
428
|
-
}
|
|
429
|
-
return { bookmarkStarts, bookmarkEnds };
|
|
430
|
-
}
|
|
431
|
-
extractInterRowElements(content) {
|
|
432
|
-
const elements = [];
|
|
433
|
-
const interRowElementTypes = [
|
|
434
|
-
"w:bookmarkEnd",
|
|
435
|
-
"w:bookmarkStart",
|
|
436
|
-
"w:commentRangeEnd",
|
|
437
|
-
"w:commentRangeStart",
|
|
438
|
-
"w:customXmlDelRangeEnd",
|
|
439
|
-
"w:customXmlDelRangeStart",
|
|
440
|
-
"w:customXmlInsRangeEnd",
|
|
441
|
-
"w:customXmlInsRangeStart",
|
|
442
|
-
"w:customXmlMoveFromRangeEnd",
|
|
443
|
-
"w:customXmlMoveFromRangeStart",
|
|
444
|
-
"w:customXmlMoveToRangeEnd",
|
|
445
|
-
"w:customXmlMoveToRangeStart",
|
|
446
|
-
"w:moveFromRangeEnd",
|
|
447
|
-
"w:moveFromRangeStart",
|
|
448
|
-
"w:moveToRangeEnd",
|
|
449
|
-
"w:moveToRangeStart",
|
|
450
|
-
"w:permEnd",
|
|
451
|
-
"w:permStart",
|
|
452
|
-
];
|
|
453
|
-
for (const elementType of interRowElementTypes) {
|
|
454
|
-
const extracted = XMLParser_1.XMLParser.extractElements(content, elementType);
|
|
455
|
-
for (const xml of extracted) {
|
|
456
|
-
elements.push({
|
|
457
|
-
xml,
|
|
458
|
-
type: elementType.replace("w:", ""),
|
|
459
|
-
});
|
|
460
|
-
}
|
|
461
|
-
}
|
|
462
|
-
elements.sort((a, b) => {
|
|
463
|
-
const posA = content.indexOf(a.xml);
|
|
464
|
-
const posB = content.indexOf(b.xml);
|
|
465
|
-
return posA - posB;
|
|
466
|
-
});
|
|
467
|
-
return elements;
|
|
468
|
-
}
|
|
469
292
|
findNextTag(content, tagName, startPos) {
|
|
470
293
|
const tag = `<${tagName}`;
|
|
471
294
|
let pos = content.indexOf(tag, startPos);
|
|
@@ -3474,9 +3297,19 @@ class DocumentParser {
|
|
|
3474
3297
|
: rawTableXml.length;
|
|
3475
3298
|
if (nextRowStart && currentRowEnd < nextRowStart) {
|
|
3476
3299
|
const betweenContent = rawTableXml.slice(currentRowEnd, nextRowStart);
|
|
3477
|
-
const
|
|
3478
|
-
|
|
3479
|
-
|
|
3300
|
+
const bookmarkEnds = this.extractBookmarkEndsFromContent(betweenContent);
|
|
3301
|
+
if (bookmarkEnds.length > 0) {
|
|
3302
|
+
const cells = row.getCells();
|
|
3303
|
+
const lastCell = cells[cells.length - 1];
|
|
3304
|
+
if (lastCell) {
|
|
3305
|
+
const cellParas = lastCell.getParagraphs();
|
|
3306
|
+
const lastPara = cellParas[cellParas.length - 1];
|
|
3307
|
+
if (lastPara) {
|
|
3308
|
+
for (const bookmark of bookmarkEnds) {
|
|
3309
|
+
lastPara.addBookmarkEnd(bookmark);
|
|
3310
|
+
}
|
|
3311
|
+
}
|
|
3312
|
+
}
|
|
3480
3313
|
}
|
|
3481
3314
|
}
|
|
3482
3315
|
}
|