pdfmake 0.3.0-beta.2 → 0.3.0-beta.3
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 +7 -0
- package/LICENSE +1 -1
- package/README.md +1 -1
- package/build/pdfmake.js +916 -1304
- 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/fonts/Roboto/Roboto-Italic.ttf +0 -0
- package/fonts/Roboto/Roboto-Medium.ttf +0 -0
- package/fonts/Roboto/Roboto-MediumItalic.ttf +0 -0
- package/fonts/Roboto/Roboto-Regular.ttf +0 -0
- package/js/Printer.js +45 -13
- package/js/URLResolver.js +10 -5
- package/package.json +1 -1
- package/src/Printer.js +41 -13
- package/src/URLResolver.js +10 -5
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/js/Printer.js
CHANGED
|
@@ -145,27 +145,55 @@ class PdfPrinter {
|
|
|
145
145
|
for (let font in this.fontDescriptors) {
|
|
146
146
|
if (this.fontDescriptors.hasOwnProperty(font)) {
|
|
147
147
|
if (this.fontDescriptors[font].normal) {
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
148
|
+
if (Array.isArray(this.fontDescriptors[font].normal)) {
|
|
149
|
+
// TrueType Collection
|
|
150
|
+
let url = getExtendedUrl(this.fontDescriptors[font].normal[0]);
|
|
151
|
+
this.urlResolver.resolve(url.url, url.headers);
|
|
152
|
+
this.fontDescriptors[font].normal[0] = url.url;
|
|
153
|
+
} else {
|
|
154
|
+
let url = getExtendedUrl(this.fontDescriptors[font].normal);
|
|
155
|
+
this.urlResolver.resolve(url.url, url.headers);
|
|
156
|
+
this.fontDescriptors[font].normal = url.url;
|
|
157
|
+
}
|
|
151
158
|
}
|
|
152
159
|
|
|
153
160
|
if (this.fontDescriptors[font].bold) {
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
161
|
+
if (Array.isArray(this.fontDescriptors[font].bold)) {
|
|
162
|
+
// TrueType Collection
|
|
163
|
+
let url = getExtendedUrl(this.fontDescriptors[font].bold[0]);
|
|
164
|
+
this.urlResolver.resolve(url.url, url.headers);
|
|
165
|
+
this.fontDescriptors[font].bold[0] = url.url;
|
|
166
|
+
} else {
|
|
167
|
+
let url = getExtendedUrl(this.fontDescriptors[font].bold);
|
|
168
|
+
this.urlResolver.resolve(url.url, url.headers);
|
|
169
|
+
this.fontDescriptors[font].bold = url.url;
|
|
170
|
+
}
|
|
157
171
|
}
|
|
158
172
|
|
|
159
173
|
if (this.fontDescriptors[font].italics) {
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
174
|
+
if (Array.isArray(this.fontDescriptors[font].italics)) {
|
|
175
|
+
// TrueType Collection
|
|
176
|
+
let url = getExtendedUrl(this.fontDescriptors[font].italics[0]);
|
|
177
|
+
this.urlResolver.resolve(url.url, url.headers);
|
|
178
|
+
this.fontDescriptors[font].italics[0] = url.url;
|
|
179
|
+
} else {
|
|
180
|
+
let url = getExtendedUrl(this.fontDescriptors[font].italics);
|
|
181
|
+
this.urlResolver.resolve(url.url, url.headers);
|
|
182
|
+
this.fontDescriptors[font].italics = url.url;
|
|
183
|
+
}
|
|
163
184
|
}
|
|
164
185
|
|
|
165
186
|
if (this.fontDescriptors[font].bolditalics) {
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
187
|
+
if (Array.isArray(this.fontDescriptors[font].bolditalics)) {
|
|
188
|
+
// TrueType Collection
|
|
189
|
+
let url = getExtendedUrl(this.fontDescriptors[font].bolditalics[0]);
|
|
190
|
+
this.urlResolver.resolve(url.url, url.headers);
|
|
191
|
+
this.fontDescriptors[font].bolditalics[0] = url.url;
|
|
192
|
+
} else {
|
|
193
|
+
let url = getExtendedUrl(this.fontDescriptors[font].bolditalics);
|
|
194
|
+
this.urlResolver.resolve(url.url, url.headers);
|
|
195
|
+
this.fontDescriptors[font].bolditalics = url.url;
|
|
196
|
+
}
|
|
169
197
|
}
|
|
170
198
|
}
|
|
171
199
|
}
|
|
@@ -268,7 +296,11 @@ function calculatePageHeight(pages, margins) {
|
|
|
268
296
|
} else if (item.item._height) {
|
|
269
297
|
return item.item._height;
|
|
270
298
|
} else if (item.type === 'vector') {
|
|
271
|
-
|
|
299
|
+
if (typeof item.item.y1 !== 'undefined') {
|
|
300
|
+
return item.item.y1 > item.item.y2 ? item.item.y1 : item.item.y2;
|
|
301
|
+
} else {
|
|
302
|
+
return item.item.h;
|
|
303
|
+
}
|
|
272
304
|
} else {
|
|
273
305
|
// TODO: add support for next item types
|
|
274
306
|
return 0;
|
package/js/URLResolver.js
CHANGED
|
@@ -50,12 +50,17 @@ class URLResolver {
|
|
|
50
50
|
if (!this.resolving[url]) {
|
|
51
51
|
this.resolving[url] = new Promise((resolve, reject) => {
|
|
52
52
|
if (url.toLowerCase().indexOf('https://') === 0 || url.toLowerCase().indexOf('http://') === 0) {
|
|
53
|
-
|
|
54
|
-
|
|
53
|
+
if (this.fs.existsSync(url)) {
|
|
54
|
+
// url was downloaded earlier
|
|
55
55
|
resolve();
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
|
|
56
|
+
} else {
|
|
57
|
+
fetchUrl(url, headers).then(buffer => {
|
|
58
|
+
this.fs.writeFileSync(url, buffer);
|
|
59
|
+
resolve();
|
|
60
|
+
}, result => {
|
|
61
|
+
reject(result);
|
|
62
|
+
});
|
|
63
|
+
}
|
|
59
64
|
} else {
|
|
60
65
|
// cannot be resolved
|
|
61
66
|
resolve();
|
package/package.json
CHANGED
package/src/Printer.js
CHANGED
|
@@ -126,24 +126,48 @@ class PdfPrinter {
|
|
|
126
126
|
for (let font in this.fontDescriptors) {
|
|
127
127
|
if (this.fontDescriptors.hasOwnProperty(font)) {
|
|
128
128
|
if (this.fontDescriptors[font].normal) {
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
129
|
+
if (Array.isArray(this.fontDescriptors[font].normal)) { // TrueType Collection
|
|
130
|
+
let url = getExtendedUrl(this.fontDescriptors[font].normal[0]);
|
|
131
|
+
this.urlResolver.resolve(url.url, url.headers);
|
|
132
|
+
this.fontDescriptors[font].normal[0] = url.url;
|
|
133
|
+
} else {
|
|
134
|
+
let url = getExtendedUrl(this.fontDescriptors[font].normal);
|
|
135
|
+
this.urlResolver.resolve(url.url, url.headers);
|
|
136
|
+
this.fontDescriptors[font].normal = url.url;
|
|
137
|
+
}
|
|
132
138
|
}
|
|
133
139
|
if (this.fontDescriptors[font].bold) {
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
140
|
+
if (Array.isArray(this.fontDescriptors[font].bold)) { // TrueType Collection
|
|
141
|
+
let url = getExtendedUrl(this.fontDescriptors[font].bold[0]);
|
|
142
|
+
this.urlResolver.resolve(url.url, url.headers);
|
|
143
|
+
this.fontDescriptors[font].bold[0] = url.url;
|
|
144
|
+
} else {
|
|
145
|
+
let url = getExtendedUrl(this.fontDescriptors[font].bold);
|
|
146
|
+
this.urlResolver.resolve(url.url, url.headers);
|
|
147
|
+
this.fontDescriptors[font].bold = url.url;
|
|
148
|
+
}
|
|
137
149
|
}
|
|
138
150
|
if (this.fontDescriptors[font].italics) {
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
151
|
+
if (Array.isArray(this.fontDescriptors[font].italics)) { // TrueType Collection
|
|
152
|
+
let url = getExtendedUrl(this.fontDescriptors[font].italics[0]);
|
|
153
|
+
this.urlResolver.resolve(url.url, url.headers);
|
|
154
|
+
this.fontDescriptors[font].italics[0] = url.url;
|
|
155
|
+
} else {
|
|
156
|
+
let url = getExtendedUrl(this.fontDescriptors[font].italics);
|
|
157
|
+
this.urlResolver.resolve(url.url, url.headers);
|
|
158
|
+
this.fontDescriptors[font].italics = url.url;
|
|
159
|
+
}
|
|
142
160
|
}
|
|
143
161
|
if (this.fontDescriptors[font].bolditalics) {
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
162
|
+
if (Array.isArray(this.fontDescriptors[font].bolditalics)) { // TrueType Collection
|
|
163
|
+
let url = getExtendedUrl(this.fontDescriptors[font].bolditalics[0]);
|
|
164
|
+
this.urlResolver.resolve(url.url, url.headers);
|
|
165
|
+
this.fontDescriptors[font].bolditalics[0] = url.url;
|
|
166
|
+
} else {
|
|
167
|
+
let url = getExtendedUrl(this.fontDescriptors[font].bolditalics);
|
|
168
|
+
this.urlResolver.resolve(url.url, url.headers);
|
|
169
|
+
this.fontDescriptors[font].bolditalics = url.url;
|
|
170
|
+
}
|
|
147
171
|
}
|
|
148
172
|
}
|
|
149
173
|
}
|
|
@@ -244,7 +268,11 @@ function calculatePageHeight(pages, margins) {
|
|
|
244
268
|
} else if (item.item._height) {
|
|
245
269
|
return item.item._height;
|
|
246
270
|
} else if (item.type === 'vector') {
|
|
247
|
-
|
|
271
|
+
if (typeof item.item.y1 !== 'undefined') {
|
|
272
|
+
return item.item.y1 > item.item.y2 ? item.item.y1 : item.item.y2;
|
|
273
|
+
} else {
|
|
274
|
+
return item.item.h;
|
|
275
|
+
}
|
|
248
276
|
} else {
|
|
249
277
|
// TODO: add support for next item types
|
|
250
278
|
return 0;
|
package/src/URLResolver.js
CHANGED
|
@@ -41,12 +41,17 @@ class URLResolver {
|
|
|
41
41
|
if (!this.resolving[url]) {
|
|
42
42
|
this.resolving[url] = new Promise((resolve, reject) => {
|
|
43
43
|
if (url.toLowerCase().indexOf('https://') === 0 || url.toLowerCase().indexOf('http://') === 0) {
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
if (this.fs.existsSync(url)) {
|
|
45
|
+
// url was downloaded earlier
|
|
46
46
|
resolve();
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
|
|
47
|
+
} else {
|
|
48
|
+
fetchUrl(url, headers).then(buffer => {
|
|
49
|
+
this.fs.writeFileSync(url, buffer);
|
|
50
|
+
resolve();
|
|
51
|
+
}, result => {
|
|
52
|
+
reject(result);
|
|
53
|
+
});
|
|
54
|
+
}
|
|
50
55
|
} else {
|
|
51
56
|
// cannot be resolved
|
|
52
57
|
resolve();
|