pdfmake 0.2.4 → 0.2.6
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 +11 -0
- package/LICENSE +1 -1
- package/build/pdfmake.js +17216 -17590
- 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 +4 -4
- package/package.json +1 -1
- package/src/browser-extensions/URLBrowserResolver.js +15 -7
- package/src/browser-extensions/pdfMake.js +47 -5
- package/src/printer.js +5 -1
package/package.json
CHANGED
|
@@ -6,10 +6,13 @@ if (typeof window !== 'undefined' && !window.Promise) {
|
|
|
6
6
|
}
|
|
7
7
|
require('core-js/es/object/values');
|
|
8
8
|
|
|
9
|
-
var fetchUrl = function (url) {
|
|
9
|
+
var fetchUrl = function (url, headers) {
|
|
10
10
|
return new Promise(function (resolve, reject) {
|
|
11
11
|
var xhr = new XMLHttpRequest();
|
|
12
12
|
xhr.open('GET', url, true);
|
|
13
|
+
for (var headerName in headers) {
|
|
14
|
+
xhr.setRequestHeader(headerName, headers[headerName]);
|
|
15
|
+
}
|
|
13
16
|
xhr.responseType = 'arraybuffer';
|
|
14
17
|
|
|
15
18
|
xhr.onreadystatechange = function () {
|
|
@@ -53,17 +56,22 @@ function URLBrowserResolver(fs) {
|
|
|
53
56
|
this.resolving = {};
|
|
54
57
|
}
|
|
55
58
|
|
|
56
|
-
URLBrowserResolver.prototype.resolve = function (url) {
|
|
59
|
+
URLBrowserResolver.prototype.resolve = function (url, headers) {
|
|
57
60
|
if (!this.resolving[url]) {
|
|
58
61
|
var _this = this;
|
|
59
62
|
this.resolving[url] = new Promise(function (resolve, reject) {
|
|
60
63
|
if (url.toLowerCase().indexOf('https://') === 0 || url.toLowerCase().indexOf('http://') === 0) {
|
|
61
|
-
|
|
62
|
-
|
|
64
|
+
if (_this.fs.existsSync(url)) {
|
|
65
|
+
// url was downloaded earlier
|
|
63
66
|
resolve();
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
+
} else {
|
|
68
|
+
fetchUrl(url, headers).then(function (buffer) {
|
|
69
|
+
_this.fs.writeFileSync(url, buffer);
|
|
70
|
+
resolve();
|
|
71
|
+
}, function (result) {
|
|
72
|
+
reject(result);
|
|
73
|
+
});
|
|
74
|
+
}
|
|
67
75
|
} else {
|
|
68
76
|
// cannot be resolved
|
|
69
77
|
resolve();
|
|
@@ -36,6 +36,14 @@ function canCreatePdf() {
|
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
Document.prototype._createDoc = function (options, cb) {
|
|
39
|
+
var getExtendedUrl = function (url) {
|
|
40
|
+
if (typeof url === 'object') {
|
|
41
|
+
return { url: url.url, headers: url.headers };
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
return { url: url, headers: {} };
|
|
45
|
+
};
|
|
46
|
+
|
|
39
47
|
options = options || {};
|
|
40
48
|
if (this.tableLayouts) {
|
|
41
49
|
options.tableLayouts = this.tableLayouts;
|
|
@@ -58,16 +66,48 @@ Document.prototype._createDoc = function (options, cb) {
|
|
|
58
66
|
for (var font in this.fonts) {
|
|
59
67
|
if (this.fonts.hasOwnProperty(font)) {
|
|
60
68
|
if (this.fonts[font].normal) {
|
|
61
|
-
|
|
69
|
+
if (Array.isArray(this.fonts[font].normal)) { // TrueType Collection
|
|
70
|
+
var url = getExtendedUrl(this.fonts[font].normal[0]);
|
|
71
|
+
urlResolver.resolve(url.url, url.headers);
|
|
72
|
+
this.fonts[font].normal[0] = url.url;
|
|
73
|
+
} else {
|
|
74
|
+
var url = getExtendedUrl(this.fonts[font].normal);
|
|
75
|
+
urlResolver.resolve(url.url, url.headers);
|
|
76
|
+
this.fonts[font].normal = url.url;
|
|
77
|
+
}
|
|
62
78
|
}
|
|
63
79
|
if (this.fonts[font].bold) {
|
|
64
|
-
|
|
80
|
+
if (Array.isArray(this.fonts[font].bold)) { // TrueType Collection
|
|
81
|
+
var url = getExtendedUrl(this.fonts[font].bold[0]);
|
|
82
|
+
urlResolver.resolve(url.url, url.headers);
|
|
83
|
+
this.fonts[font].bold[0] = url.url;
|
|
84
|
+
} else {
|
|
85
|
+
var url = getExtendedUrl(this.fonts[font].bold);
|
|
86
|
+
urlResolver.resolve(url.url, url.headers);
|
|
87
|
+
this.fonts[font].bold = url.url;
|
|
88
|
+
}
|
|
65
89
|
}
|
|
66
90
|
if (this.fonts[font].italics) {
|
|
67
|
-
|
|
91
|
+
if (Array.isArray(this.fonts[font].italics)) { // TrueType Collection
|
|
92
|
+
var url = getExtendedUrl(this.fonts[font].italics[0]);
|
|
93
|
+
urlResolver.resolve(url.url, url.headers);
|
|
94
|
+
this.fonts[font].italics[0] = url.url;
|
|
95
|
+
} else {
|
|
96
|
+
var url = getExtendedUrl(this.fonts[font].italics);
|
|
97
|
+
urlResolver.resolve(url.url, url.headers);
|
|
98
|
+
this.fonts[font].italics = url.url;
|
|
99
|
+
}
|
|
68
100
|
}
|
|
69
101
|
if (this.fonts[font].bolditalics) {
|
|
70
|
-
|
|
102
|
+
if (Array.isArray(this.fonts[font].bolditalics)) { // TrueType Collection
|
|
103
|
+
var url = getExtendedUrl(this.fonts[font].bolditalics[0]);
|
|
104
|
+
urlResolver.resolve(url.url, url.headers);
|
|
105
|
+
this.fonts[font].bolditalics[0] = url.url;
|
|
106
|
+
} else {
|
|
107
|
+
var url = getExtendedUrl(this.fonts[font].bolditalics);
|
|
108
|
+
urlResolver.resolve(url.url, url.headers);
|
|
109
|
+
this.fonts[font].bolditalics = url.url;
|
|
110
|
+
}
|
|
71
111
|
}
|
|
72
112
|
}
|
|
73
113
|
}
|
|
@@ -75,7 +115,9 @@ Document.prototype._createDoc = function (options, cb) {
|
|
|
75
115
|
if (this.docDefinition.images) {
|
|
76
116
|
for (var image in this.docDefinition.images) {
|
|
77
117
|
if (this.docDefinition.images.hasOwnProperty(image)) {
|
|
78
|
-
|
|
118
|
+
var url = getExtendedUrl(this.docDefinition.images[image]);
|
|
119
|
+
urlResolver.resolve(url.url, url.headers);
|
|
120
|
+
this.docDefinition.images[image] = url.url;
|
|
79
121
|
}
|
|
80
122
|
}
|
|
81
123
|
}
|
package/src/printer.js
CHANGED
|
@@ -215,7 +215,11 @@ function calculatePageHeight(pages, margins) {
|
|
|
215
215
|
} else if (item.item._height) {
|
|
216
216
|
return item.item._height;
|
|
217
217
|
} else if (item.type === 'vector') {
|
|
218
|
-
|
|
218
|
+
if (typeof item.item.y1 !== 'undefined') {
|
|
219
|
+
return item.item.y1 > item.item.y2 ? item.item.y1 : item.item.y2;
|
|
220
|
+
} else {
|
|
221
|
+
return item.item.h;
|
|
222
|
+
}
|
|
219
223
|
} else {
|
|
220
224
|
// TODO: add support for next item types
|
|
221
225
|
return 0;
|