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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pdfmake",
3
- "version": "0.2.4",
3
+ "version": "0.2.6",
4
4
  "description": "Client/server side PDF printing in pure JavaScript",
5
5
  "main": "src/printer.js",
6
6
  "browser": "build/pdfmake.js",
@@ -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
- fetchUrl(url).then(function (buffer) {
62
- _this.fs.writeFileSync(url, buffer);
64
+ if (_this.fs.existsSync(url)) {
65
+ // url was downloaded earlier
63
66
  resolve();
64
- }, function (result) {
65
- reject(result);
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
- urlResolver.resolve(this.fonts[font].normal);
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
- urlResolver.resolve(this.fonts[font].bold);
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
- urlResolver.resolve(this.fonts[font].italics);
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
- urlResolver.resolve(this.fonts[font].bolditalics);
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
- urlResolver.resolve(this.docDefinition.images[image]);
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
- return item.item.y1 > item.item.y2 ? item.item.y1 : item.item.y2;
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;