pdfmake 0.3.0-beta.3 → 0.3.0-beta.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/CHANGELOG.md +9 -0
- package/build/pdfmake.js +2213 -8630
- package/build/pdfmake.js.map +1 -1
- package/build/pdfmake.min.js +2 -2
- package/build/pdfmake.min.js.map +1 -1
- package/build/vfs_fonts.js +6 -5
- package/js/3rd-party/svg-to-pdfkit/source.js +247 -920
- package/js/3rd-party/svg-to-pdfkit.js +0 -3
- package/js/DocMeasure.js +6 -139
- package/js/DocPreprocessor.js +2 -54
- package/js/DocumentContext.js +0 -40
- package/js/ElementWriter.js +2 -70
- package/js/LayoutBuilder.js +20 -165
- package/js/Line.js +6 -25
- package/js/OutputDocument.js +15 -24
- package/js/OutputDocumentServer.js +0 -6
- package/js/PDFDocument.js +1 -46
- package/js/PageElementWriter.js +7 -31
- package/js/PageSize.js +2 -16
- package/js/Printer.js +5 -46
- package/js/Renderer.js +11 -98
- package/js/SVGMeasure.js +1 -20
- package/js/StyleContextStack.js +12 -36
- package/js/TableProcessor.js +36 -117
- package/js/TextBreaker.js +2 -44
- package/js/TextDecorator.js +1 -38
- package/js/TextInlines.js +8 -49
- package/js/URLResolver.js +0 -13
- package/js/base.js +1 -17
- package/js/browser-extensions/OutputDocumentBrowser.js +5 -17
- package/js/browser-extensions/URLBrowserResolver.js +0 -17
- package/js/browser-extensions/fonts/Roboto.js +0 -4
- package/js/browser-extensions/index.js +0 -16
- package/js/browser-extensions/pdfMake.js +2 -4
- package/js/browser-extensions/standard-fonts/Courier.js +0 -4
- package/js/browser-extensions/standard-fonts/Helvetica.js +0 -4
- package/js/browser-extensions/standard-fonts/Symbol.js +0 -4
- package/js/browser-extensions/standard-fonts/Times.js +0 -4
- package/js/browser-extensions/standard-fonts/ZapfDingbats.js +0 -4
- package/js/columnCalculator.js +6 -18
- package/js/helpers/node.js +3 -27
- package/js/helpers/tools.js +0 -8
- package/js/helpers/variableType.js +4 -9
- package/js/index.js +0 -6
- package/js/qrEnc.js +126 -215
- package/js/tableLayouts.js +1 -28
- package/js/virtual-fs.js +3 -19
- package/package.json +2 -2
- package/src/OutputDocument.js +78 -78
package/js/ElementWriter.js
CHANGED
|
@@ -2,17 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
exports.__esModule = true;
|
|
4
4
|
exports.default = void 0;
|
|
5
|
-
|
|
6
5
|
var _variableType = require("./helpers/variableType");
|
|
7
|
-
|
|
8
6
|
var _tools = require("./helpers/tools");
|
|
9
|
-
|
|
10
7
|
var _DocumentContext = _interopRequireDefault(require("./DocumentContext"));
|
|
11
|
-
|
|
12
8
|
var _events = require("events");
|
|
13
|
-
|
|
14
9
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
|
-
|
|
16
10
|
/**
|
|
17
11
|
* A line/vector writer, which adds elements to current page and sets
|
|
18
12
|
* their positions based on the context
|
|
@@ -23,21 +17,17 @@ class ElementWriter extends _events.EventEmitter {
|
|
|
23
17
|
this._context = context;
|
|
24
18
|
this.contextStack = [];
|
|
25
19
|
}
|
|
26
|
-
|
|
27
20
|
context() {
|
|
28
21
|
return this._context;
|
|
29
22
|
}
|
|
30
|
-
|
|
31
23
|
addLine(line, dontUpdateContextPosition, index) {
|
|
32
24
|
let height = line.getHeight();
|
|
33
25
|
let context = this.context();
|
|
34
26
|
let page = context.getCurrentPage();
|
|
35
27
|
let position = this.getCurrentPositionOnPage();
|
|
36
|
-
|
|
37
28
|
if (context.availableHeight < height || !page) {
|
|
38
29
|
return false;
|
|
39
30
|
}
|
|
40
|
-
|
|
41
31
|
line.x = context.x + (line.x || 0);
|
|
42
32
|
line.y = context.y + (line.y || 0);
|
|
43
33
|
this.alignLine(line);
|
|
@@ -46,37 +36,29 @@ class ElementWriter extends _events.EventEmitter {
|
|
|
46
36
|
item: line
|
|
47
37
|
}, index);
|
|
48
38
|
this.emit('lineAdded', line);
|
|
49
|
-
|
|
50
39
|
if (!dontUpdateContextPosition) {
|
|
51
40
|
context.moveDown(height);
|
|
52
41
|
}
|
|
53
|
-
|
|
54
42
|
return position;
|
|
55
43
|
}
|
|
56
|
-
|
|
57
44
|
alignLine(line) {
|
|
58
45
|
let width = this.context().availableWidth;
|
|
59
46
|
let lineWidth = line.getWidth();
|
|
60
47
|
let alignment = line.inlines && line.inlines.length > 0 && line.inlines[0].alignment;
|
|
61
48
|
let offset = 0;
|
|
62
|
-
|
|
63
49
|
switch (alignment) {
|
|
64
50
|
case 'right':
|
|
65
51
|
offset = width - lineWidth;
|
|
66
52
|
break;
|
|
67
|
-
|
|
68
53
|
case 'center':
|
|
69
54
|
offset = (width - lineWidth) / 2;
|
|
70
55
|
break;
|
|
71
56
|
}
|
|
72
|
-
|
|
73
57
|
if (offset) {
|
|
74
58
|
line.x = (line.x || 0) + offset;
|
|
75
59
|
}
|
|
76
|
-
|
|
77
60
|
if (alignment === 'justify' && !line.newLineForced && !line.lastLineInParagraph && line.inlines.length > 1) {
|
|
78
61
|
let additionalSpacing = (width - lineWidth) / (line.inlines.length - 1);
|
|
79
|
-
|
|
80
62
|
for (let i = 1, l = line.inlines.length; i < l; i++) {
|
|
81
63
|
offset = i * additionalSpacing;
|
|
82
64
|
line.inlines[i].x += offset;
|
|
@@ -84,20 +66,16 @@ class ElementWriter extends _events.EventEmitter {
|
|
|
84
66
|
}
|
|
85
67
|
}
|
|
86
68
|
}
|
|
87
|
-
|
|
88
69
|
addImage(image, index) {
|
|
89
70
|
let context = this.context();
|
|
90
71
|
let page = context.getCurrentPage();
|
|
91
72
|
let position = this.getCurrentPositionOnPage();
|
|
92
|
-
|
|
93
73
|
if (!page || image.absolutePosition === undefined && context.availableHeight < image._height && page.items.length > 0) {
|
|
94
74
|
return false;
|
|
95
75
|
}
|
|
96
|
-
|
|
97
76
|
if (image._x === undefined) {
|
|
98
77
|
image._x = image.x || 0;
|
|
99
78
|
}
|
|
100
|
-
|
|
101
79
|
image.x = context.x + image._x;
|
|
102
80
|
image.y = context.y;
|
|
103
81
|
this.alignImage(image);
|
|
@@ -108,24 +86,21 @@ class ElementWriter extends _events.EventEmitter {
|
|
|
108
86
|
context.moveDown(image._height);
|
|
109
87
|
return position;
|
|
110
88
|
}
|
|
111
|
-
|
|
112
89
|
addCanvas(node, index) {
|
|
113
90
|
let context = this.context();
|
|
114
91
|
let page = context.getCurrentPage();
|
|
115
92
|
let positions = [];
|
|
116
93
|
let height = node._minHeight;
|
|
117
|
-
|
|
118
94
|
if (!page || node.absolutePosition === undefined && context.availableHeight < height) {
|
|
119
95
|
// TODO: support for canvas larger than a page
|
|
120
96
|
// TODO: support for other overflow methods
|
|
97
|
+
|
|
121
98
|
return false;
|
|
122
99
|
}
|
|
123
|
-
|
|
124
100
|
this.alignCanvas(node);
|
|
125
101
|
node.canvas.forEach(function (vector) {
|
|
126
102
|
let position = this.addVector(vector, false, false, index);
|
|
127
103
|
positions.push(position);
|
|
128
|
-
|
|
129
104
|
if (index !== undefined) {
|
|
130
105
|
index++;
|
|
131
106
|
}
|
|
@@ -133,21 +108,17 @@ class ElementWriter extends _events.EventEmitter {
|
|
|
133
108
|
context.moveDown(height);
|
|
134
109
|
return positions;
|
|
135
110
|
}
|
|
136
|
-
|
|
137
111
|
addSVG(image, index) {
|
|
138
112
|
// TODO: same as addImage
|
|
139
113
|
let context = this.context();
|
|
140
114
|
let page = context.getCurrentPage();
|
|
141
115
|
let position = this.getCurrentPositionOnPage();
|
|
142
|
-
|
|
143
116
|
if (!page || image.absolutePosition === undefined && context.availableHeight < image._height && page.items.length > 0) {
|
|
144
117
|
return false;
|
|
145
118
|
}
|
|
146
|
-
|
|
147
119
|
if (image._x === undefined) {
|
|
148
120
|
image._x = image.x || 0;
|
|
149
121
|
}
|
|
150
|
-
|
|
151
122
|
image.x = context.x + image._x;
|
|
152
123
|
image.y = context.y;
|
|
153
124
|
this.alignImage(image);
|
|
@@ -158,48 +129,38 @@ class ElementWriter extends _events.EventEmitter {
|
|
|
158
129
|
context.moveDown(image._height);
|
|
159
130
|
return position;
|
|
160
131
|
}
|
|
161
|
-
|
|
162
132
|
addQr(qr, index) {
|
|
163
133
|
let context = this.context();
|
|
164
134
|
let page = context.getCurrentPage();
|
|
165
135
|
let position = this.getCurrentPositionOnPage();
|
|
166
|
-
|
|
167
136
|
if (!page || qr.absolutePosition === undefined && context.availableHeight < qr._height) {
|
|
168
137
|
return false;
|
|
169
138
|
}
|
|
170
|
-
|
|
171
139
|
if (qr._x === undefined) {
|
|
172
140
|
qr._x = qr.x || 0;
|
|
173
141
|
}
|
|
174
|
-
|
|
175
142
|
qr.x = context.x + qr._x;
|
|
176
143
|
qr.y = context.y;
|
|
177
144
|
this.alignImage(qr);
|
|
178
|
-
|
|
179
145
|
for (let i = 0, l = qr._canvas.length; i < l; i++) {
|
|
180
146
|
let vector = qr._canvas[i];
|
|
181
147
|
vector.x += qr.x;
|
|
182
148
|
vector.y += qr.y;
|
|
183
149
|
this.addVector(vector, true, true, index);
|
|
184
150
|
}
|
|
185
|
-
|
|
186
151
|
context.moveDown(qr._height);
|
|
187
152
|
return position;
|
|
188
153
|
}
|
|
189
|
-
|
|
190
154
|
addAttachment(attachment, index) {
|
|
191
155
|
let context = this.context();
|
|
192
156
|
let page = context.getCurrentPage();
|
|
193
157
|
let position = this.getCurrentPositionOnPage();
|
|
194
|
-
|
|
195
158
|
if (!page || attachment.absolutePosition === undefined && context.availableHeight < attachment._height && page.items.length > 0) {
|
|
196
159
|
return false;
|
|
197
160
|
}
|
|
198
|
-
|
|
199
161
|
if (attachment._x === undefined) {
|
|
200
162
|
attachment._x = attachment.x || 0;
|
|
201
163
|
}
|
|
202
|
-
|
|
203
164
|
attachment.x = context.x + attachment._x;
|
|
204
165
|
attachment.y = context.y;
|
|
205
166
|
addPageItem(page, {
|
|
@@ -209,54 +170,44 @@ class ElementWriter extends _events.EventEmitter {
|
|
|
209
170
|
context.moveDown(attachment._height);
|
|
210
171
|
return position;
|
|
211
172
|
}
|
|
212
|
-
|
|
213
173
|
alignImage(image) {
|
|
214
174
|
let width = this.context().availableWidth;
|
|
215
175
|
let imageWidth = image._minWidth;
|
|
216
176
|
let offset = 0;
|
|
217
|
-
|
|
218
177
|
switch (image._alignment) {
|
|
219
178
|
case 'right':
|
|
220
179
|
offset = width - imageWidth;
|
|
221
180
|
break;
|
|
222
|
-
|
|
223
181
|
case 'center':
|
|
224
182
|
offset = (width - imageWidth) / 2;
|
|
225
183
|
break;
|
|
226
184
|
}
|
|
227
|
-
|
|
228
185
|
if (offset) {
|
|
229
186
|
image.x = (image.x || 0) + offset;
|
|
230
187
|
}
|
|
231
188
|
}
|
|
232
|
-
|
|
233
189
|
alignCanvas(node) {
|
|
234
190
|
let width = this.context().availableWidth;
|
|
235
191
|
let canvasWidth = node._minWidth;
|
|
236
192
|
let offset = 0;
|
|
237
|
-
|
|
238
193
|
switch (node._alignment) {
|
|
239
194
|
case 'right':
|
|
240
195
|
offset = width - canvasWidth;
|
|
241
196
|
break;
|
|
242
|
-
|
|
243
197
|
case 'center':
|
|
244
198
|
offset = (width - canvasWidth) / 2;
|
|
245
199
|
break;
|
|
246
200
|
}
|
|
247
|
-
|
|
248
201
|
if (offset) {
|
|
249
202
|
node.canvas.forEach(vector => {
|
|
250
203
|
(0, _tools.offsetVector)(vector, offset, 0);
|
|
251
204
|
});
|
|
252
205
|
}
|
|
253
206
|
}
|
|
254
|
-
|
|
255
207
|
addVector(vector, ignoreContextX, ignoreContextY, index) {
|
|
256
208
|
let context = this.context();
|
|
257
209
|
let page = context.getCurrentPage();
|
|
258
210
|
let position = this.getCurrentPositionOnPage();
|
|
259
|
-
|
|
260
211
|
if (page) {
|
|
261
212
|
(0, _tools.offsetVector)(vector, ignoreContextX ? 0 : context.x, ignoreContextY ? 0 : context.y);
|
|
262
213
|
addPageItem(page, {
|
|
@@ -266,7 +217,6 @@ class ElementWriter extends _events.EventEmitter {
|
|
|
266
217
|
return position;
|
|
267
218
|
}
|
|
268
219
|
}
|
|
269
|
-
|
|
270
220
|
beginClip(width, height) {
|
|
271
221
|
let ctx = this.context();
|
|
272
222
|
let page = ctx.getCurrentPage();
|
|
@@ -281,7 +231,6 @@ class ElementWriter extends _events.EventEmitter {
|
|
|
281
231
|
});
|
|
282
232
|
return true;
|
|
283
233
|
}
|
|
284
|
-
|
|
285
234
|
endClip() {
|
|
286
235
|
let ctx = this.context();
|
|
287
236
|
let page = ctx.getCurrentPage();
|
|
@@ -290,24 +239,19 @@ class ElementWriter extends _events.EventEmitter {
|
|
|
290
239
|
});
|
|
291
240
|
return true;
|
|
292
241
|
}
|
|
293
|
-
|
|
294
242
|
addFragment(block, useBlockXOffset, useBlockYOffset, dontUpdateContextPosition) {
|
|
295
243
|
let ctx = this.context();
|
|
296
244
|
let page = ctx.getCurrentPage();
|
|
297
|
-
|
|
298
245
|
if (!useBlockXOffset && block.height > ctx.availableHeight) {
|
|
299
246
|
return false;
|
|
300
247
|
}
|
|
301
|
-
|
|
302
248
|
block.items.forEach(item => {
|
|
303
249
|
switch (item.type) {
|
|
304
250
|
case 'line':
|
|
305
251
|
var l = item.item.clone();
|
|
306
|
-
|
|
307
252
|
if (l._node) {
|
|
308
253
|
l._node.positions[0].pageNumber = ctx.page + 1;
|
|
309
254
|
}
|
|
310
|
-
|
|
311
255
|
l.x = (l.x || 0) + (useBlockXOffset ? block.xOffset || 0 : ctx.x);
|
|
312
256
|
l.y = (l.y || 0) + (useBlockYOffset ? block.yOffset || 0 : ctx.y);
|
|
313
257
|
page.items.push({
|
|
@@ -315,7 +259,6 @@ class ElementWriter extends _events.EventEmitter {
|
|
|
315
259
|
item: l
|
|
316
260
|
});
|
|
317
261
|
break;
|
|
318
|
-
|
|
319
262
|
case 'vector':
|
|
320
263
|
var v = (0, _tools.pack)(item.item);
|
|
321
264
|
(0, _tools.offsetVector)(v, useBlockXOffset ? block.xOffset || 0 : ctx.x, useBlockYOffset ? block.yOffset || 0 : ctx.y);
|
|
@@ -324,7 +267,6 @@ class ElementWriter extends _events.EventEmitter {
|
|
|
324
267
|
item: v
|
|
325
268
|
});
|
|
326
269
|
break;
|
|
327
|
-
|
|
328
270
|
case 'image':
|
|
329
271
|
case 'svg':
|
|
330
272
|
var img = (0, _tools.pack)(item.item);
|
|
@@ -337,13 +279,12 @@ class ElementWriter extends _events.EventEmitter {
|
|
|
337
279
|
break;
|
|
338
280
|
}
|
|
339
281
|
});
|
|
340
|
-
|
|
341
282
|
if (!dontUpdateContextPosition) {
|
|
342
283
|
ctx.moveDown(block.height);
|
|
343
284
|
}
|
|
344
|
-
|
|
345
285
|
return true;
|
|
346
286
|
}
|
|
287
|
+
|
|
347
288
|
/**
|
|
348
289
|
* Pushes the provided context onto the stack or creates a new one
|
|
349
290
|
*
|
|
@@ -354,14 +295,11 @@ class ElementWriter extends _events.EventEmitter {
|
|
|
354
295
|
* @param {object|number} contextOrWidth
|
|
355
296
|
* @param {number} height
|
|
356
297
|
*/
|
|
357
|
-
|
|
358
|
-
|
|
359
298
|
pushContext(contextOrWidth, height) {
|
|
360
299
|
if (contextOrWidth === undefined) {
|
|
361
300
|
height = this.context().getCurrentPage().height - this.context().pageMargins.top - this.context().pageMargins.bottom;
|
|
362
301
|
contextOrWidth = this.context().availableWidth;
|
|
363
302
|
}
|
|
364
|
-
|
|
365
303
|
if ((0, _variableType.isNumber)(contextOrWidth)) {
|
|
366
304
|
contextOrWidth = new _DocumentContext.default({
|
|
367
305
|
width: contextOrWidth,
|
|
@@ -373,21 +311,16 @@ class ElementWriter extends _events.EventEmitter {
|
|
|
373
311
|
bottom: 0
|
|
374
312
|
});
|
|
375
313
|
}
|
|
376
|
-
|
|
377
314
|
this.contextStack.push(this.context());
|
|
378
315
|
this._context = contextOrWidth;
|
|
379
316
|
}
|
|
380
|
-
|
|
381
317
|
popContext() {
|
|
382
318
|
this._context = this.contextStack.pop();
|
|
383
319
|
}
|
|
384
|
-
|
|
385
320
|
getCurrentPositionOnPage() {
|
|
386
321
|
return (this.contextStack[0] || this.context()).getCurrentPosition();
|
|
387
322
|
}
|
|
388
|
-
|
|
389
323
|
}
|
|
390
|
-
|
|
391
324
|
function addPageItem(page, item, index) {
|
|
392
325
|
if (index === null || index === undefined || index < 0 || index > page.items.length) {
|
|
393
326
|
page.items.push(item);
|
|
@@ -395,6 +328,5 @@ function addPageItem(page, item, index) {
|
|
|
395
328
|
page.items.splice(index, 0, item);
|
|
396
329
|
}
|
|
397
330
|
}
|
|
398
|
-
|
|
399
331
|
var _default = ElementWriter;
|
|
400
332
|
exports.default = _default;
|