@flowaccount/pdfmake 1.0.4-staging.2 → 1.0.5-staging.0

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.
@@ -1,277 +1,277 @@
1
- 'use strict';
2
-
3
- var isString = require('./helpers').isString;
4
- var isNumber = require('./helpers').isNumber;
5
- var isBoolean = require('./helpers').isBoolean;
6
- var isArray = require('./helpers').isArray;
7
- var isUndefined = require('./helpers').isUndefined;
8
- var fontStringify = require('./helpers').fontStringify;
9
-
10
- function DocPreprocessor() {
11
-
12
- }
13
-
14
- DocPreprocessor.prototype.preprocessDocument = function (docStructure) {
15
- this.parentNode = null;
16
- this.tocs = {};
17
- this.nodeReferences = {};
18
- return this.preprocessNode(docStructure);
19
- };
20
-
21
- DocPreprocessor.prototype.preprocessNode = function (node) {
22
- // expand shortcuts and casting values
23
- if (isArray(node)) {
24
- node = { stack: node };
25
- } else if (isString(node)) {
26
- node = { text: node };
27
- } else if (isNumber(node) || isBoolean(node)) {
28
- node = { text: node.toString() };
29
- } else if (node === undefined || node === null) {
30
- node = { text: '' };
31
- } else if (Object.keys(node).length === 0) { // empty object
32
- node = { text: '' };
33
- } else if ('text' in node && (node.text === undefined || node.text === null)) {
34
- node.text = '';
35
- }
36
-
37
- if (node.columns) {
38
- return this.preprocessColumns(node);
39
- } else if (node.stack) {
40
- return this.preprocessVerticalContainer(node);
41
- } else if (node.layers) {
42
- return this.preprocessLayers(node);
43
- } else if (node.ul) {
44
- return this.preprocessList(node);
45
- } else if (node.ol) {
46
- return this.preprocessList(node);
47
- } else if (node.table) {
48
- return this.preprocessTable(node);
49
- } else if (node.text !== undefined) {
50
- return this.preprocessText(node);
51
- } else if (node.toc) {
52
- return this.preprocessToc(node);
53
- } else if (node.image) {
54
- return this.preprocessImage(node);
55
- } else if (node.svg) {
56
- return this.preprocessSVG(node);
57
- } else if (node.canvas) {
58
- return this.preprocessCanvas(node);
59
- } else if (node.qr) {
60
- return this.preprocessQr(node);
61
- } else if (node.pageReference || node.textReference) {
62
- return this.preprocessText(node);
63
- } else {
64
- throw 'Unrecognized document structure: ' + JSON.stringify(node, fontStringify);
65
- }
66
- };
67
-
68
- DocPreprocessor.prototype.preprocessColumns = function (node) {
69
- var columns = node.columns;
70
-
71
- for (var i = 0, l = columns.length; i < l; i++) {
72
- columns[i] = this.preprocessNode(columns[i]);
73
- }
74
-
75
- return node;
76
- };
77
-
78
- DocPreprocessor.prototype.preprocessVerticalContainer = function (node) {
79
- var items = node.stack;
80
-
81
- for (var i = 0, l = items.length; i < l; i++) {
82
- items[i] = this.preprocessNode(items[i]);
83
- }
84
-
85
- return node;
86
- };
87
-
88
- DocPreprocessor.prototype.preprocessLayers = function (node) {
89
- var items = node.layers;
90
-
91
- for (var i = 0, l = items.length; i < l; i++) {
92
- items[i] = this.preprocessNode(items[i]);
93
- }
94
-
95
- return node;
96
- };
97
-
98
- DocPreprocessor.prototype.preprocessList = function (node) {
99
- var items = node.ul || node.ol;
100
-
101
- for (var i = 0, l = items.length; i < l; i++) {
102
- items[i] = this.preprocessNode(items[i]);
103
- }
104
-
105
- return node;
106
- };
107
-
108
- DocPreprocessor.prototype.preprocessTable = function (node) {
109
- var col, row, cols, rows;
110
-
111
- if (!node.table.body || !node.table.body[0]) {
112
- return node;
113
- }
114
-
115
- for (col = 0, cols = node.table.body[0].length; col < cols; col++) {
116
- for (row = 0, rows = node.table.body.length; row < rows; row++) {
117
- var rowData = node.table.body[row];
118
- var data = rowData[col];
119
- if (data !== undefined) {
120
- if (data === null) { // transform to object
121
- data = '';
122
- }
123
- if (!data._span) {
124
- rowData[col] = this.preprocessNode(data);
125
- }
126
- }
127
- }
128
- }
129
-
130
- return node;
131
- };
132
-
133
- DocPreprocessor.prototype.preprocessText = function (node) {
134
- var i;
135
- var l;
136
-
137
- if (node.tocItem) {
138
- if (!isArray(node.tocItem)) {
139
- node.tocItem = [node.tocItem];
140
- }
141
-
142
- for (i = 0, l = node.tocItem.length; i < l; i++) {
143
- if (!isString(node.tocItem[i])) {
144
- node.tocItem[i] = '_default_';
145
- }
146
-
147
- var tocItemId = node.tocItem[i];
148
-
149
- if (!this.tocs[tocItemId]) {
150
- this.tocs[tocItemId] = { toc: { _items: [], _pseudo: true } };
151
- }
152
-
153
- if (!node.id) {
154
- node.id = 'toc-' + tocItemId + '-' + this.tocs[tocItemId].toc._items.length;
155
- }
156
-
157
- var tocItemRef = {
158
- _nodeRef: this._getNodeForNodeRef(node),
159
- _textNodeRef: node
160
- };
161
- this.tocs[tocItemId].toc._items.push(tocItemRef);
162
- }
163
- }
164
-
165
- if (node.id) {
166
- if (this.nodeReferences[node.id]) {
167
- if (!this.nodeReferences[node.id]._pseudo) {
168
- throw "Node id '" + node.id + "' already exists";
169
- }
170
-
171
- this.nodeReferences[node.id]._nodeRef = this._getNodeForNodeRef(node);
172
- this.nodeReferences[node.id]._textNodeRef = node;
173
- this.nodeReferences[node.id]._pseudo = false;
174
- } else {
175
- this.nodeReferences[node.id] = {
176
- _nodeRef: this._getNodeForNodeRef(node),
177
- _textNodeRef: node
178
- };
179
- }
180
- }
181
-
182
- if (node.pageReference) {
183
- if (!this.nodeReferences[node.pageReference]) {
184
- this.nodeReferences[node.pageReference] = {
185
- _nodeRef: {},
186
- _textNodeRef: {},
187
- _pseudo: true
188
- };
189
- }
190
- node.text = '00000';
191
- node.linkToDestination = node.pageReference;
192
- node._pageRef = this.nodeReferences[node.pageReference];
193
- }
194
-
195
- if (node.textReference) {
196
- if (!this.nodeReferences[node.textReference]) {
197
- this.nodeReferences[node.textReference] = {
198
- _nodeRef: {},
199
- _pseudo: true
200
- };
201
- }
202
-
203
- node.text = '';
204
- node.linkToDestination = node.textReference;
205
- node._textRef = this.nodeReferences[node.textReference];
206
- }
207
-
208
- if (node.text && node.text.text) {
209
- node.text = [this.preprocessNode(node.text)];
210
- } else if (isArray(node.text)) {
211
- var isSetParentNode = false;
212
- if (this.parentNode === null) {
213
- this.parentNode = node;
214
- isSetParentNode = true;
215
- }
216
-
217
- for (i = 0, l = node.text.length; i < l; i++) {
218
- node.text[i] = this.preprocessNode(node.text[i]);
219
- }
220
-
221
- if (isSetParentNode) {
222
- this.parentNode = null;
223
- }
224
- }
225
-
226
- return node;
227
- };
228
-
229
- DocPreprocessor.prototype.preprocessToc = function (node) {
230
- if (!node.toc.id) {
231
- node.toc.id = '_default_';
232
- }
233
-
234
- node.toc.title = node.toc.title ? this.preprocessNode(node.toc.title) : null;
235
- node.toc._items = [];
236
-
237
- if (this.tocs[node.toc.id]) {
238
- if (!this.tocs[node.toc.id].toc._pseudo) {
239
- throw "TOC '" + node.toc.id + "' already exists";
240
- }
241
-
242
- node.toc._items = this.tocs[node.toc.id].toc._items;
243
- }
244
-
245
- this.tocs[node.toc.id] = node;
246
-
247
- return node;
248
- };
249
-
250
- DocPreprocessor.prototype.preprocessImage = function (node) {
251
- if (!isUndefined(node.image.type) && !isUndefined(node.image.data) && (node.image.type === 'Buffer') && isArray(node.image.data)) {
252
- node.image = Buffer.from(node.image.data);
253
- }
254
- return node;
255
- };
256
-
257
- DocPreprocessor.prototype.preprocessSVG = function (node) {
258
- return node;
259
- };
260
-
261
- DocPreprocessor.prototype.preprocessCanvas = function (node) {
262
- return node;
263
- };
264
-
265
- DocPreprocessor.prototype.preprocessQr = function (node) {
266
- return node;
267
- };
268
-
269
- DocPreprocessor.prototype._getNodeForNodeRef = function (node) {
270
- if (this.parentNode) {
271
- return this.parentNode;
272
- }
273
-
274
- return node;
275
- };
276
-
277
- module.exports = DocPreprocessor;
1
+ 'use strict';
2
+
3
+ var isString = require('./helpers').isString;
4
+ var isNumber = require('./helpers').isNumber;
5
+ var isBoolean = require('./helpers').isBoolean;
6
+ var isArray = require('./helpers').isArray;
7
+ var isUndefined = require('./helpers').isUndefined;
8
+ var fontStringify = require('./helpers').fontStringify;
9
+
10
+ function DocPreprocessor() {
11
+
12
+ }
13
+
14
+ DocPreprocessor.prototype.preprocessDocument = function (docStructure) {
15
+ this.parentNode = null;
16
+ this.tocs = {};
17
+ this.nodeReferences = {};
18
+ return this.preprocessNode(docStructure);
19
+ };
20
+
21
+ DocPreprocessor.prototype.preprocessNode = function (node) {
22
+ // expand shortcuts and casting values
23
+ if (isArray(node)) {
24
+ node = { stack: node };
25
+ } else if (isString(node)) {
26
+ node = { text: node };
27
+ } else if (isNumber(node) || isBoolean(node)) {
28
+ node = { text: node.toString() };
29
+ } else if (node === undefined || node === null) {
30
+ node = { text: '' };
31
+ } else if (Object.keys(node).length === 0) { // empty object
32
+ node = { text: '' };
33
+ } else if ('text' in node && (node.text === undefined || node.text === null)) {
34
+ node.text = '';
35
+ }
36
+
37
+ if (node.columns) {
38
+ return this.preprocessColumns(node);
39
+ } else if (node.stack) {
40
+ return this.preprocessVerticalContainer(node);
41
+ } else if (node.layers) {
42
+ return this.preprocessLayers(node);
43
+ } else if (node.ul) {
44
+ return this.preprocessList(node);
45
+ } else if (node.ol) {
46
+ return this.preprocessList(node);
47
+ } else if (node.table) {
48
+ return this.preprocessTable(node);
49
+ } else if (node.text !== undefined) {
50
+ return this.preprocessText(node);
51
+ } else if (node.toc) {
52
+ return this.preprocessToc(node);
53
+ } else if (node.image) {
54
+ return this.preprocessImage(node);
55
+ } else if (node.svg) {
56
+ return this.preprocessSVG(node);
57
+ } else if (node.canvas) {
58
+ return this.preprocessCanvas(node);
59
+ } else if (node.qr) {
60
+ return this.preprocessQr(node);
61
+ } else if (node.pageReference || node.textReference) {
62
+ return this.preprocessText(node);
63
+ } else {
64
+ throw 'Unrecognized document structure: ' + JSON.stringify(node, fontStringify);
65
+ }
66
+ };
67
+
68
+ DocPreprocessor.prototype.preprocessColumns = function (node) {
69
+ var columns = node.columns;
70
+
71
+ for (var i = 0, l = columns.length; i < l; i++) {
72
+ columns[i] = this.preprocessNode(columns[i]);
73
+ }
74
+
75
+ return node;
76
+ };
77
+
78
+ DocPreprocessor.prototype.preprocessVerticalContainer = function (node) {
79
+ var items = node.stack;
80
+
81
+ for (var i = 0, l = items.length; i < l; i++) {
82
+ items[i] = this.preprocessNode(items[i]);
83
+ }
84
+
85
+ return node;
86
+ };
87
+
88
+ DocPreprocessor.prototype.preprocessLayers = function (node) {
89
+ var items = node.layers;
90
+
91
+ for (var i = 0, l = items.length; i < l; i++) {
92
+ items[i] = this.preprocessNode(items[i]);
93
+ }
94
+
95
+ return node;
96
+ };
97
+
98
+ DocPreprocessor.prototype.preprocessList = function (node) {
99
+ var items = node.ul || node.ol;
100
+
101
+ for (var i = 0, l = items.length; i < l; i++) {
102
+ items[i] = this.preprocessNode(items[i]);
103
+ }
104
+
105
+ return node;
106
+ };
107
+
108
+ DocPreprocessor.prototype.preprocessTable = function (node) {
109
+ var col, row, cols, rows;
110
+
111
+ if (!node.table.body || !node.table.body[0]) {
112
+ return node;
113
+ }
114
+
115
+ for (col = 0, cols = node.table.body[0].length; col < cols; col++) {
116
+ for (row = 0, rows = node.table.body.length; row < rows; row++) {
117
+ var rowData = node.table.body[row];
118
+ var data = rowData[col];
119
+ if (data !== undefined) {
120
+ if (data === null) { // transform to object
121
+ data = '';
122
+ }
123
+ if (!data._span) {
124
+ rowData[col] = this.preprocessNode(data);
125
+ }
126
+ }
127
+ }
128
+ }
129
+
130
+ return node;
131
+ };
132
+
133
+ DocPreprocessor.prototype.preprocessText = function (node) {
134
+ var i;
135
+ var l;
136
+
137
+ if (node.tocItem) {
138
+ if (!isArray(node.tocItem)) {
139
+ node.tocItem = [node.tocItem];
140
+ }
141
+
142
+ for (i = 0, l = node.tocItem.length; i < l; i++) {
143
+ if (!isString(node.tocItem[i])) {
144
+ node.tocItem[i] = '_default_';
145
+ }
146
+
147
+ var tocItemId = node.tocItem[i];
148
+
149
+ if (!this.tocs[tocItemId]) {
150
+ this.tocs[tocItemId] = { toc: { _items: [], _pseudo: true } };
151
+ }
152
+
153
+ if (!node.id) {
154
+ node.id = 'toc-' + tocItemId + '-' + this.tocs[tocItemId].toc._items.length;
155
+ }
156
+
157
+ var tocItemRef = {
158
+ _nodeRef: this._getNodeForNodeRef(node),
159
+ _textNodeRef: node
160
+ };
161
+ this.tocs[tocItemId].toc._items.push(tocItemRef);
162
+ }
163
+ }
164
+
165
+ if (node.id) {
166
+ if (this.nodeReferences[node.id]) {
167
+ if (!this.nodeReferences[node.id]._pseudo) {
168
+ throw "Node id '" + node.id + "' already exists";
169
+ }
170
+
171
+ this.nodeReferences[node.id]._nodeRef = this._getNodeForNodeRef(node);
172
+ this.nodeReferences[node.id]._textNodeRef = node;
173
+ this.nodeReferences[node.id]._pseudo = false;
174
+ } else {
175
+ this.nodeReferences[node.id] = {
176
+ _nodeRef: this._getNodeForNodeRef(node),
177
+ _textNodeRef: node
178
+ };
179
+ }
180
+ }
181
+
182
+ if (node.pageReference) {
183
+ if (!this.nodeReferences[node.pageReference]) {
184
+ this.nodeReferences[node.pageReference] = {
185
+ _nodeRef: {},
186
+ _textNodeRef: {},
187
+ _pseudo: true
188
+ };
189
+ }
190
+ node.text = '00000';
191
+ node.linkToDestination = node.pageReference;
192
+ node._pageRef = this.nodeReferences[node.pageReference];
193
+ }
194
+
195
+ if (node.textReference) {
196
+ if (!this.nodeReferences[node.textReference]) {
197
+ this.nodeReferences[node.textReference] = {
198
+ _nodeRef: {},
199
+ _pseudo: true
200
+ };
201
+ }
202
+
203
+ node.text = '';
204
+ node.linkToDestination = node.textReference;
205
+ node._textRef = this.nodeReferences[node.textReference];
206
+ }
207
+
208
+ if (node.text && node.text.text) {
209
+ node.text = [this.preprocessNode(node.text)];
210
+ } else if (isArray(node.text)) {
211
+ var isSetParentNode = false;
212
+ if (this.parentNode === null) {
213
+ this.parentNode = node;
214
+ isSetParentNode = true;
215
+ }
216
+
217
+ for (i = 0, l = node.text.length; i < l; i++) {
218
+ node.text[i] = this.preprocessNode(node.text[i]);
219
+ }
220
+
221
+ if (isSetParentNode) {
222
+ this.parentNode = null;
223
+ }
224
+ }
225
+
226
+ return node;
227
+ };
228
+
229
+ DocPreprocessor.prototype.preprocessToc = function (node) {
230
+ if (!node.toc.id) {
231
+ node.toc.id = '_default_';
232
+ }
233
+
234
+ node.toc.title = node.toc.title ? this.preprocessNode(node.toc.title) : null;
235
+ node.toc._items = [];
236
+
237
+ if (this.tocs[node.toc.id]) {
238
+ if (!this.tocs[node.toc.id].toc._pseudo) {
239
+ throw "TOC '" + node.toc.id + "' already exists";
240
+ }
241
+
242
+ node.toc._items = this.tocs[node.toc.id].toc._items;
243
+ }
244
+
245
+ this.tocs[node.toc.id] = node;
246
+
247
+ return node;
248
+ };
249
+
250
+ DocPreprocessor.prototype.preprocessImage = function (node) {
251
+ if (!isUndefined(node.image.type) && !isUndefined(node.image.data) && (node.image.type === 'Buffer') && isArray(node.image.data)) {
252
+ node.image = Buffer.from(node.image.data);
253
+ }
254
+ return node;
255
+ };
256
+
257
+ DocPreprocessor.prototype.preprocessSVG = function (node) {
258
+ return node;
259
+ };
260
+
261
+ DocPreprocessor.prototype.preprocessCanvas = function (node) {
262
+ return node;
263
+ };
264
+
265
+ DocPreprocessor.prototype.preprocessQr = function (node) {
266
+ return node;
267
+ };
268
+
269
+ DocPreprocessor.prototype._getNodeForNodeRef = function (node) {
270
+ if (this.parentNode) {
271
+ return this.parentNode;
272
+ }
273
+
274
+ return node;
275
+ };
276
+
277
+ module.exports = DocPreprocessor;