pdfmake 0.3.0-beta.18 → 0.3.0-beta.19

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.
@@ -21,20 +21,10 @@ class OutputDocumentBrowser extends _OutputDocument.default {
21
21
  /**
22
22
  * @returns {Promise<Blob>}
23
23
  */
24
- getBlob() {
25
- return new Promise((resolve, reject) => {
26
- this.getBuffer().then(buffer => {
27
- try {
28
- let blob = new Blob([buffer], {
29
- type: 'application/pdf'
30
- });
31
- resolve(blob);
32
- } catch (e) {
33
- reject(e);
34
- }
35
- }, result => {
36
- reject(result);
37
- });
24
+ async getBlob() {
25
+ const buffer = await this.getBuffer();
26
+ return new Blob([buffer], {
27
+ type: 'application/pdf'
38
28
  });
39
29
  }
40
30
 
@@ -42,77 +32,50 @@ class OutputDocumentBrowser extends _OutputDocument.default {
42
32
  * @param {string} filename
43
33
  * @returns {Promise}
44
34
  */
45
- download(filename = 'file.pdf') {
46
- return new Promise((resolve, reject) => {
47
- this.getBlob().then(blob => {
48
- try {
49
- (0, _fileSaver.saveAs)(blob, filename);
50
- resolve();
51
- } catch (e) {
52
- reject(e);
53
- }
54
- }, result => {
55
- reject(result);
56
- });
57
- });
35
+ async download(filename = 'file.pdf') {
36
+ const blob = await this.getBlob();
37
+ (0, _fileSaver.saveAs)(blob, filename);
58
38
  }
59
39
 
60
40
  /**
61
41
  * @param {Window} win
62
42
  * @returns {Promise}
63
43
  */
64
- open(win = null) {
65
- return new Promise((resolve, reject) => {
66
- if (!win) {
67
- win = openWindow();
68
- }
69
- this.getBlob().then(blob => {
70
- try {
71
- let urlCreator = window.URL || window.webkitURL;
72
- let pdfUrl = urlCreator.createObjectURL(blob);
73
- win.location.href = pdfUrl;
44
+ async open(win = null) {
45
+ if (!win) {
46
+ win = openWindow();
47
+ }
48
+ const blob = await this.getBlob();
49
+ try {
50
+ let urlCreator = window.URL || window.webkitURL;
51
+ let pdfUrl = urlCreator.createObjectURL(blob);
52
+ win.location.href = pdfUrl;
74
53
 
75
- //
76
- resolve();
77
- /* temporarily disabled
78
- if (win === window) {
79
- resolve();
80
- } else {
81
- setTimeout(() => {
82
- if (win.window === null) { // is closed by AdBlock
83
- window.location.href = pdfUrl; // open in actual window
84
- }
85
- resolve();
86
- }, 500);
87
- }
88
- */
89
- } catch (e) {
90
- win.close();
91
- reject(e);
92
- }
93
- }, result => {
94
- reject(result);
95
- });
96
- });
54
+ /* temporarily disabled
55
+ if (win === window) {
56
+ return;
57
+ } else {
58
+ setTimeout(() => {
59
+ if (win.window === null) { // is closed by AdBlock
60
+ window.location.href = pdfUrl; // open in actual window
61
+ }
62
+ return;
63
+ }, 500);
64
+ }
65
+ */
66
+ } finally {
67
+ win.close();
68
+ }
97
69
  }
98
70
 
99
71
  /**
100
72
  * @param {Window} win
101
73
  * @returns {Promise}
102
74
  */
103
- print(win = null) {
104
- return new Promise((resolve, reject) => {
105
- this.getStream().then(stream => {
106
- stream.setOpenActionAsPrint();
107
- return this.open(win).then(() => {
108
- resolve();
109
- }, result => {
110
- reject(result);
111
- });
112
- }, result => {
113
- reject(result);
114
- });
115
- });
75
+ async print(win = null) {
76
+ const stream = await this.getStream();
77
+ stream.setOpenActionAsPrint();
78
+ await this.open(win);
116
79
  }
117
80
  }
118
81
  var _default = exports.default = OutputDocumentBrowser;
@@ -4,7 +4,7 @@ exports.__esModule = true;
4
4
  exports.default = void 0;
5
5
  var _base = _interopRequireDefault(require("../base"));
6
6
  var _OutputDocumentBrowser = _interopRequireDefault(require("./OutputDocumentBrowser"));
7
- var _URLBrowserResolver = _interopRequireDefault(require("./URLBrowserResolver"));
7
+ var _URLResolver = _interopRequireDefault(require("../URLResolver"));
8
8
  var _fs = _interopRequireDefault(require("fs"));
9
9
  var _configurator = _interopRequireDefault(require("core-js/configurator"));
10
10
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
@@ -23,7 +23,7 @@ let defaultClientFonts = {
23
23
  class pdfmake extends _base.default {
24
24
  constructor() {
25
25
  super();
26
- this.urlResolver = () => new _URLBrowserResolver.default(this.virtualfs);
26
+ this.urlResolver = () => new _URLResolver.default(this.virtualfs);
27
27
  this.fonts = defaultClientFonts;
28
28
  }
29
29
  addFontContainer(fontContainer) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pdfmake",
3
- "version": "0.3.0-beta.18",
3
+ "version": "0.3.0-beta.19",
4
4
  "description": "Client/server side PDF printing in pure JavaScript",
5
5
  "main": "js/index.js",
6
6
  "esnext": "src/index.js",
@@ -10,44 +10,44 @@
10
10
  },
11
11
  "dependencies": {
12
12
  "linebreak": "^1.1.0",
13
- "pdfkit": "^0.17.1",
14
- "xmldoc": "^2.0.1"
13
+ "pdfkit": "^0.17.2",
14
+ "xmldoc": "^2.0.3"
15
15
  },
16
16
  "devDependencies": {
17
- "@babel/cli": "^7.27.2",
18
- "@babel/core": "^7.27.1",
17
+ "@babel/cli": "^7.28.3",
18
+ "@babel/core": "^7.28.5",
19
19
  "@babel/plugin-transform-modules-commonjs": "^7.27.1",
20
- "@babel/preset-env": "^7.27.2",
21
- "@eslint/js": "^9.26.0",
20
+ "@babel/preset-env": "^7.28.5",
21
+ "@eslint/js": "^9.39.2",
22
22
  "assert": "^2.1.0",
23
23
  "babel-loader": "^10.0.0",
24
24
  "brfs": "^2.0.2",
25
25
  "browserify-zlib": "^0.2.0",
26
26
  "buffer": "^6.0.3",
27
- "core-js": "^3.42.0",
28
- "eslint": "^9.26.0",
29
- "eslint-plugin-jsdoc": "^50.6.11",
27
+ "core-js": "^3.47.0",
28
+ "eslint": "^9.39.2",
29
+ "eslint-plugin-jsdoc": "^61.5.0",
30
30
  "expose-loader": "^5.0.1",
31
31
  "file-saver": "^2.0.5",
32
- "globals": "^16.1.0",
33
- "mocha": "^11.2.2",
32
+ "globals": "^16.5.0",
33
+ "mocha": "^11.7.5",
34
34
  "npm-run-all": "^4.1.5",
35
35
  "process": "^0.11.10",
36
- "rewire": "^7.0.0",
36
+ "rewire": "^9.0.1",
37
37
  "shx": "^0.4.0",
38
- "sinon": "^20.0.0",
38
+ "sinon": "^21.0.1",
39
39
  "source-map-loader": "^5.0.0",
40
40
  "stream-browserify": "^3.0.0",
41
41
  "string-replace-webpack-plugin": "^0.1.3",
42
42
  "svg-to-pdfkit": "^0.1.8",
43
- "terser-webpack-plugin": "^5.3.14",
43
+ "terser-webpack-plugin": "^5.3.16",
44
44
  "transform-loader": "^0.2.4",
45
45
  "util": "^0.12.5",
46
- "webpack": "^5.99.8",
46
+ "webpack": "^5.104.1",
47
47
  "webpack-cli": "^6.0.1"
48
48
  },
49
49
  "engines": {
50
- "node": ">=18"
50
+ "node": ">=20"
51
51
  },
52
52
  "scripts": {
53
53
  "test": "run-s build mocha lint",
@@ -72,7 +72,17 @@ class LayoutBuilder {
72
72
  return false;
73
73
  }
74
74
 
75
- linearNodeList = linearNodeList.filter(node => node.positions.length > 0);
75
+ const hasRenderableContent = node => {
76
+ if (!node || node.positions.length === 0) {
77
+ return false;
78
+ }
79
+ if (node.text === '' && !node.listMarker) {
80
+ return false;
81
+ }
82
+ return true;
83
+ };
84
+
85
+ linearNodeList = linearNodeList.filter(hasRenderableContent);
76
86
 
77
87
  linearNodeList.forEach(node => {
78
88
  let nodeInfo = {};
@@ -20,57 +20,43 @@ class OutputDocument {
20
20
  * @returns {Promise<Buffer>}
21
21
  */
22
22
  getBuffer() {
23
- if (this.bufferPromise === null) {
24
- this.bufferPromise = new Promise((resolve, reject) => {
25
- this.getStream().then(stream => {
26
-
27
- let chunks = [];
28
- let result;
29
- stream.on('readable', () => {
30
- let chunk;
31
- while ((chunk = stream.read(this.bufferSize)) !== null) {
32
- chunks.push(chunk);
33
- }
34
- });
35
- stream.on('end', () => {
36
- result = Buffer.concat(chunks);
37
- resolve(result);
38
- });
39
- stream.end();
40
-
41
- }, result => {
42
- reject(result);
23
+ const getBufferInternal = (async () => {
24
+ const stream = await this.getStream();
25
+ return new Promise((resolve) => {
26
+ let chunks = [];
27
+ stream.on('readable', () => {
28
+ let chunk;
29
+ while ((chunk = stream.read(this.bufferSize)) !== null) {
30
+ chunks.push(chunk);
31
+ }
43
32
  });
33
+ stream.on('end', () => {
34
+ resolve(Buffer.concat(chunks));
35
+ });
36
+ stream.end();
44
37
  });
45
- }
38
+ });
46
39
 
40
+ if (this.bufferPromise === null) {
41
+ this.bufferPromise = getBufferInternal();
42
+ }
47
43
  return this.bufferPromise;
48
44
  }
49
45
 
50
46
  /**
51
47
  * @returns {Promise<string>}
52
48
  */
53
- getBase64() {
54
- return new Promise((resolve, reject) => {
55
- this.getBuffer().then(buffer => {
56
- resolve(buffer.toString('base64'));
57
- }, result => {
58
- reject(result);
59
- });
60
- });
49
+ async getBase64() {
50
+ const buffer = await this.getBuffer();
51
+ return buffer.toString('base64');
61
52
  }
62
53
 
63
54
  /**
64
55
  * @returns {Promise<string>}
65
56
  */
66
- getDataUrl() {
67
- return new Promise((resolve, reject) => {
68
- this.getBase64().then(data => {
69
- resolve('data:application/pdf;base64,' + data);
70
- }, result => {
71
- reject(result);
72
- });
73
- });
57
+ async getDataUrl() {
58
+ const data = await this.getBase64();
59
+ return 'data:application/pdf;base64,' + data;
74
60
  }
75
61
 
76
62
  }
@@ -7,17 +7,12 @@ class OutputDocumentServer extends OutputDocument {
7
7
  * @param {string} filename
8
8
  * @returns {Promise}
9
9
  */
10
- write(filename) {
11
- return new Promise((resolve, reject) => {
12
- this.getStream().then(stream => {
13
- stream.pipe(fs.createWriteStream(filename));
14
- stream.on('end', () => {
15
- resolve();
16
- });
17
- stream.end();
18
- }, result => {
19
- reject(result);
20
- });
10
+ async write(filename) {
11
+ const stream = await this.getStream();
12
+ return new Promise((resolve) => {
13
+ stream.pipe(fs.createWriteStream(filename));
14
+ stream.on('end', resolve);
15
+ stream.end();
21
16
  });
22
17
  }
23
18