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.
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
- let url = getExtendedUrl(this.fontDescriptors[font].normal);
149
- this.urlResolver.resolve(url.url, url.headers);
150
- this.fontDescriptors[font].normal = url.url;
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
- let url = getExtendedUrl(this.fontDescriptors[font].bold);
155
- this.urlResolver.resolve(url.url, url.headers);
156
- this.fontDescriptors[font].bold = url.url;
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
- let url = getExtendedUrl(this.fontDescriptors[font].italics);
161
- this.urlResolver.resolve(url.url, url.headers);
162
- this.fontDescriptors[font].italics = url.url;
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
- let url = getExtendedUrl(this.fontDescriptors[font].bolditalics);
167
- this.urlResolver.resolve(url.url, url.headers);
168
- this.fontDescriptors[font].bolditalics = url.url;
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
- return item.item.y1 > item.item.y2 ? item.item.y1 : item.item.y2;
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
- fetchUrl(url, headers).then(buffer => {
54
- this.fs.writeFileSync(url, buffer);
53
+ if (this.fs.existsSync(url)) {
54
+ // url was downloaded earlier
55
55
  resolve();
56
- }, result => {
57
- reject(result);
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pdfmake",
3
- "version": "0.3.0-beta.2",
3
+ "version": "0.3.0-beta.3",
4
4
  "description": "Client/server side PDF printing in pure JavaScript",
5
5
  "main": "js/index.js",
6
6
  "esnext": "src/index.js",
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
- let url = getExtendedUrl(this.fontDescriptors[font].normal);
130
- this.urlResolver.resolve(url.url, url.headers);
131
- this.fontDescriptors[font].normal = url.url;
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
- let url = getExtendedUrl(this.fontDescriptors[font].bold);
135
- this.urlResolver.resolve(url.url, url.headers);
136
- this.fontDescriptors[font].bold = url.url;
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
- let url = getExtendedUrl(this.fontDescriptors[font].italics);
140
- this.urlResolver.resolve(url.url, url.headers);
141
- this.fontDescriptors[font].italics = url.url;
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
- let url = getExtendedUrl(this.fontDescriptors[font].bolditalics);
145
- this.urlResolver.resolve(url.url, url.headers);
146
- this.fontDescriptors[font].bolditalics = url.url;
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
- return item.item.y1 > item.item.y2 ? item.item.y1 : item.item.y2;
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;
@@ -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
- fetchUrl(url, headers).then(buffer => {
45
- this.fs.writeFileSync(url, buffer);
44
+ if (this.fs.existsSync(url)) {
45
+ // url was downloaded earlier
46
46
  resolve();
47
- }, result => {
48
- reject(result);
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();