@spinajs/templates-pdf 2.0.139 → 2.0.141
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/lib/cjs/config/pdf.d.ts +15 -0
- package/lib/cjs/config/pdf.d.ts.map +1 -0
- package/lib/cjs/config/pdf.js +17 -0
- package/lib/cjs/config/pdf.js.map +1 -0
- package/lib/cjs/index.d.ts +4 -1
- package/lib/cjs/index.d.ts.map +1 -1
- package/lib/cjs/index.js +34 -3
- package/lib/cjs/index.js.map +1 -1
- package/lib/mjs/config/pdf.d.ts +15 -0
- package/lib/mjs/config/pdf.d.ts.map +1 -0
- package/lib/mjs/config/pdf.js +15 -0
- package/lib/mjs/config/pdf.js.map +1 -0
- package/lib/mjs/index.d.ts +4 -1
- package/lib/mjs/index.d.ts.map +1 -1
- package/lib/mjs/index.js +35 -4
- package/lib/mjs/index.js.map +1 -1
- package/lib/tsconfig.cjs.tsbuildinfo +1 -1
- package/lib/tsconfig.mjs.tsbuildinfo +1 -1
- package/package.json +13 -15
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pdf.d.ts","sourceRoot":"","sources":["../../../src/config/pdf.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,GAAG;;;;;;;;;;;;CAYR,CAAC;AAEF,eAAe,GAAG,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const pdf = {
|
|
4
|
+
templates: {
|
|
5
|
+
pdf: {
|
|
6
|
+
static: {
|
|
7
|
+
port: 3000,
|
|
8
|
+
},
|
|
9
|
+
args: {
|
|
10
|
+
headless: true,
|
|
11
|
+
},
|
|
12
|
+
options: {},
|
|
13
|
+
},
|
|
14
|
+
},
|
|
15
|
+
};
|
|
16
|
+
exports.default = pdf;
|
|
17
|
+
//# sourceMappingURL=pdf.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pdf.js","sourceRoot":"","sources":["../../../src/config/pdf.ts"],"names":[],"mappings":";;AAAA,MAAM,GAAG,GAAG;IACV,SAAS,EAAE;QACT,GAAG,EAAE;YACH,MAAM,EAAE;gBACN,IAAI,EAAE,IAAI;aACX;YACD,IAAI,EAAE;gBACJ,QAAQ,EAAE,IAAI;aACf;YACD,OAAO,EAAE,EAAE;SACZ;KACF;CACF,CAAC;AAEF,kBAAe,GAAG,CAAC"}
|
package/lib/cjs/index.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
1
2
|
import { TemplateRenderer, Templates } from '@spinajs/templates';
|
|
2
3
|
import { Log } from '@spinajs/log';
|
|
3
|
-
import
|
|
4
|
+
import * as http from 'http';
|
|
5
|
+
import '@spinajs/templates-pug';
|
|
4
6
|
export declare class PdfRenderer extends TemplateRenderer {
|
|
5
7
|
protected Options: any;
|
|
6
8
|
protected Log: Log;
|
|
@@ -10,5 +12,6 @@ export declare class PdfRenderer extends TemplateRenderer {
|
|
|
10
12
|
renderToFile(template: string, model: unknown, filePath: string, language?: string): Promise<void>;
|
|
11
13
|
render(_templateName: string, _model: unknown, _language?: string): Promise<string>;
|
|
12
14
|
protected compile(_path: string): Promise<void>;
|
|
15
|
+
protected runLocalServer(basePath: string): Promise<http.Server>;
|
|
13
16
|
}
|
|
14
17
|
//# sourceMappingURL=index.d.ts.map
|
package/lib/cjs/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAIjE,OAAO,EAAE,GAAG,EAAU,MAAM,cAAc,CAAC;AAE3C,OAAO,wBAAwB,CAAC;AAEhC,qBACa,WAAY,SAAQ,gBAAgB;IAE/C,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC;IAGvB,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;IAGnB,SAAS,CAAC,iBAAiB,EAAE,SAAS,CAAC;IAEvC,IAAW,IAAI,WAEd;IAED,IAAW,SAAS,WAEnB;IAEY,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAIjE,OAAO,EAAE,GAAG,EAAU,MAAM,cAAc,CAAC;AAE3C,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,wBAAwB,CAAC;AAEhC,qBACa,WAAY,SAAQ,gBAAgB;IAE/C,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC;IAGvB,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;IAGnB,SAAS,CAAC,iBAAiB,EAAE,SAAS,CAAC;IAEvC,IAAW,IAAI,WAEd;IAED,IAAW,SAAS,WAEnB;IAEY,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA4ClG,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;cAKhF,OAAO,CAAC,KAAK,EAAE,MAAM;cAErB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;CAmBvE"}
|
package/lib/cjs/index.js
CHANGED
|
@@ -20,6 +20,7 @@ const configuration_1 = require("@spinajs/configuration");
|
|
|
20
20
|
const di_1 = require("@spinajs/di");
|
|
21
21
|
const path_1 = require("path");
|
|
22
22
|
const log_1 = require("@spinajs/log");
|
|
23
|
+
const express_1 = __importDefault(require("express"));
|
|
23
24
|
require("@spinajs/templates-pug");
|
|
24
25
|
let PdfRenderer = class PdfRenderer extends templates_1.TemplateRenderer {
|
|
25
26
|
get Type() {
|
|
@@ -29,16 +30,23 @@ let PdfRenderer = class PdfRenderer extends templates_1.TemplateRenderer {
|
|
|
29
30
|
return '.pdf';
|
|
30
31
|
}
|
|
31
32
|
async renderToFile(template, model, filePath, language) {
|
|
33
|
+
let server = null;
|
|
34
|
+
let browser = null;
|
|
32
35
|
try {
|
|
33
36
|
this.Log.timeStart(`pdf-template-rendering-${filePath}`);
|
|
34
37
|
this.Log.trace(`Rendering pdf template ${template} to file ${filePath}`);
|
|
35
|
-
const
|
|
36
|
-
const
|
|
38
|
+
const templateBasePath = (0, path_1.dirname)(template);
|
|
39
|
+
const compiledTemplate = await this.TemplatingService.render((0, path_1.join)(templateBasePath, (0, path_1.basename)(template, '.pdf')) + '.pug', model, language);
|
|
40
|
+
// fire up local http server for serving images etc
|
|
41
|
+
// becouse chromium prevents from reading local files when not
|
|
42
|
+
// rendering file with file:// protocol for security reasons
|
|
43
|
+
server = await this.runLocalServer(templateBasePath);
|
|
44
|
+
browser = await puppeteer_1.default.launch(this.Options.args);
|
|
37
45
|
const page = await browser.newPage();
|
|
38
46
|
await page.setContent(compiledTemplate);
|
|
39
47
|
await page.pdf({
|
|
40
48
|
path: filePath,
|
|
41
|
-
...this.Options
|
|
49
|
+
...this.Options,
|
|
42
50
|
});
|
|
43
51
|
}
|
|
44
52
|
catch (err) {
|
|
@@ -51,6 +59,12 @@ let PdfRenderer = class PdfRenderer extends templates_1.TemplateRenderer {
|
|
|
51
59
|
if (duration > this.Options.renderDurationWarning) {
|
|
52
60
|
this.Log.warn(`Rendering pdf template ${template} to file ${filePath} took too long.`);
|
|
53
61
|
}
|
|
62
|
+
if (browser) {
|
|
63
|
+
await browser.close();
|
|
64
|
+
}
|
|
65
|
+
if (server) {
|
|
66
|
+
await server.close();
|
|
67
|
+
}
|
|
54
68
|
}
|
|
55
69
|
}
|
|
56
70
|
async render(_templateName, _model, _language) {
|
|
@@ -58,6 +72,23 @@ let PdfRenderer = class PdfRenderer extends templates_1.TemplateRenderer {
|
|
|
58
72
|
}
|
|
59
73
|
// no compilation at start
|
|
60
74
|
async compile(_path) { }
|
|
75
|
+
async runLocalServer(basePath) {
|
|
76
|
+
const self = this;
|
|
77
|
+
const app = (0, express_1.default)();
|
|
78
|
+
app.use(express_1.default.static(basePath));
|
|
79
|
+
return new Promise((resolve, reject) => {
|
|
80
|
+
app
|
|
81
|
+
.listen(this.Options.static.port, function () {
|
|
82
|
+
self.Log.trace(`PDF image server started`);
|
|
83
|
+
self.Log.trace(`PDF static file dir at ${basePath}`);
|
|
84
|
+
resolve(this);
|
|
85
|
+
})
|
|
86
|
+
.on('error', (err) => {
|
|
87
|
+
self.Log.error(err, `PDF image server cannot start`);
|
|
88
|
+
reject(err);
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
}
|
|
61
92
|
};
|
|
62
93
|
__decorate([
|
|
63
94
|
(0, configuration_1.Config)('templates.pdf'),
|
package/lib/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pdf.d.ts","sourceRoot":"","sources":["../../../src/config/pdf.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,GAAG;;;;;;;;;;;;CAYR,CAAC;AAEF,eAAe,GAAG,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pdf.js","sourceRoot":"","sources":["../../../src/config/pdf.ts"],"names":[],"mappings":"AAAA,MAAM,GAAG,GAAG;IACV,SAAS,EAAE;QACT,GAAG,EAAE;YACH,MAAM,EAAE;gBACN,IAAI,EAAE,IAAI;aACX;YACD,IAAI,EAAE;gBACJ,QAAQ,EAAE,IAAI;aACf;YACD,OAAO,EAAE,EAAE;SACZ;KACF;CACF,CAAC;AAEF,eAAe,GAAG,CAAC"}
|
package/lib/mjs/index.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
1
2
|
import { TemplateRenderer, Templates } from '@spinajs/templates';
|
|
2
3
|
import { Log } from '@spinajs/log';
|
|
3
|
-
import
|
|
4
|
+
import * as http from 'http';
|
|
5
|
+
import '@spinajs/templates-pug';
|
|
4
6
|
export declare class PdfRenderer extends TemplateRenderer {
|
|
5
7
|
protected Options: any;
|
|
6
8
|
protected Log: Log;
|
|
@@ -10,5 +12,6 @@ export declare class PdfRenderer extends TemplateRenderer {
|
|
|
10
12
|
renderToFile(template: string, model: unknown, filePath: string, language?: string): Promise<void>;
|
|
11
13
|
render(_templateName: string, _model: unknown, _language?: string): Promise<string>;
|
|
12
14
|
protected compile(_path: string): Promise<void>;
|
|
15
|
+
protected runLocalServer(basePath: string): Promise<http.Server>;
|
|
13
16
|
}
|
|
14
17
|
//# sourceMappingURL=index.d.ts.map
|
package/lib/mjs/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAIjE,OAAO,EAAE,GAAG,EAAU,MAAM,cAAc,CAAC;AAE3C,OAAO,wBAAwB,CAAC;AAEhC,qBACa,WAAY,SAAQ,gBAAgB;IAE/C,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC;IAGvB,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;IAGnB,SAAS,CAAC,iBAAiB,EAAE,SAAS,CAAC;IAEvC,IAAW,IAAI,WAEd;IAED,IAAW,SAAS,WAEnB;IAEY,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAIjE,OAAO,EAAE,GAAG,EAAU,MAAM,cAAc,CAAC;AAE3C,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,wBAAwB,CAAC;AAEhC,qBACa,WAAY,SAAQ,gBAAgB;IAE/C,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC;IAGvB,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;IAGnB,SAAS,CAAC,iBAAiB,EAAE,SAAS,CAAC;IAEvC,IAAW,IAAI,WAEd;IAED,IAAW,SAAS,WAEnB;IAEY,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA4ClG,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;cAKhF,OAAO,CAAC,KAAK,EAAE,MAAM;cAErB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;CAmBvE"}
|
package/lib/mjs/index.js
CHANGED
|
@@ -14,7 +14,8 @@ import { Config } from '@spinajs/configuration';
|
|
|
14
14
|
import { Injectable, LazyInject } from '@spinajs/di';
|
|
15
15
|
import { basename, dirname, join } from 'path';
|
|
16
16
|
import { Log, Logger } from '@spinajs/log';
|
|
17
|
-
import
|
|
17
|
+
import Express from 'express';
|
|
18
|
+
import '@spinajs/templates-pug';
|
|
18
19
|
let PdfRenderer = class PdfRenderer extends TemplateRenderer {
|
|
19
20
|
get Type() {
|
|
20
21
|
return 'pdf';
|
|
@@ -23,16 +24,23 @@ let PdfRenderer = class PdfRenderer extends TemplateRenderer {
|
|
|
23
24
|
return '.pdf';
|
|
24
25
|
}
|
|
25
26
|
async renderToFile(template, model, filePath, language) {
|
|
27
|
+
let server = null;
|
|
28
|
+
let browser = null;
|
|
26
29
|
try {
|
|
27
30
|
this.Log.timeStart(`pdf-template-rendering-${filePath}`);
|
|
28
31
|
this.Log.trace(`Rendering pdf template ${template} to file ${filePath}`);
|
|
29
|
-
const
|
|
30
|
-
const
|
|
32
|
+
const templateBasePath = dirname(template);
|
|
33
|
+
const compiledTemplate = await this.TemplatingService.render(join(templateBasePath, basename(template, '.pdf')) + '.pug', model, language);
|
|
34
|
+
// fire up local http server for serving images etc
|
|
35
|
+
// becouse chromium prevents from reading local files when not
|
|
36
|
+
// rendering file with file:// protocol for security reasons
|
|
37
|
+
server = await this.runLocalServer(templateBasePath);
|
|
38
|
+
browser = await puppeteer.launch(this.Options.args);
|
|
31
39
|
const page = await browser.newPage();
|
|
32
40
|
await page.setContent(compiledTemplate);
|
|
33
41
|
await page.pdf({
|
|
34
42
|
path: filePath,
|
|
35
|
-
...this.Options
|
|
43
|
+
...this.Options,
|
|
36
44
|
});
|
|
37
45
|
}
|
|
38
46
|
catch (err) {
|
|
@@ -45,6 +53,12 @@ let PdfRenderer = class PdfRenderer extends TemplateRenderer {
|
|
|
45
53
|
if (duration > this.Options.renderDurationWarning) {
|
|
46
54
|
this.Log.warn(`Rendering pdf template ${template} to file ${filePath} took too long.`);
|
|
47
55
|
}
|
|
56
|
+
if (browser) {
|
|
57
|
+
await browser.close();
|
|
58
|
+
}
|
|
59
|
+
if (server) {
|
|
60
|
+
await server.close();
|
|
61
|
+
}
|
|
48
62
|
}
|
|
49
63
|
}
|
|
50
64
|
async render(_templateName, _model, _language) {
|
|
@@ -52,6 +66,23 @@ let PdfRenderer = class PdfRenderer extends TemplateRenderer {
|
|
|
52
66
|
}
|
|
53
67
|
// no compilation at start
|
|
54
68
|
async compile(_path) { }
|
|
69
|
+
async runLocalServer(basePath) {
|
|
70
|
+
const self = this;
|
|
71
|
+
const app = Express();
|
|
72
|
+
app.use(Express.static(basePath));
|
|
73
|
+
return new Promise((resolve, reject) => {
|
|
74
|
+
app
|
|
75
|
+
.listen(this.Options.static.port, function () {
|
|
76
|
+
self.Log.trace(`PDF image server started`);
|
|
77
|
+
self.Log.trace(`PDF static file dir at ${basePath}`);
|
|
78
|
+
resolve(this);
|
|
79
|
+
})
|
|
80
|
+
.on('error', (err) => {
|
|
81
|
+
self.Log.error(err, `PDF image server cannot start`);
|
|
82
|
+
reject(err);
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
}
|
|
55
86
|
};
|
|
56
87
|
__decorate([
|
|
57
88
|
Config('templates.pdf'),
|
package/lib/mjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|