datainout
Version:
Import and reports data
70 lines (68 loc) • 2.03 kB
JavaScript
var __async = (__this, __arguments, generator) => {
return new Promise((resolve, reject) => {
var fulfilled = (value) => {
try {
step(generator.next(value));
} catch (e) {
reject(e);
}
};
var rejected = (value) => {
try {
step(generator.throw(value));
} catch (e) {
reject(e);
}
};
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
step((generator = generator.apply(__this, __arguments)).next());
});
};
// src/reporters/exporters/Pdf.exporter.ts
import * as ejs from "ejs";
import * as fs from "fs";
import * as puppeteer from "puppeteer";
var PdfExporter = class {
constructor(templatePath) {
this.templatePath = templatePath;
}
write(reportPath, data, opts) {
return __async(this, null, function* () {
const { browser, content } = yield this.genTemplate(data, opts);
yield browser.close();
fs.writeFile(reportPath, content, () => console.log("Write file pdf successfully"));
});
}
toBuffer(data, opts) {
return __async(this, null, function* () {
const { browser, content } = yield this.genTemplate(data, opts);
yield browser.close();
return content;
});
}
genTemplate(data, opts) {
return __async(this, null, function* () {
var _a;
const html = ejs.render((_a = this.templatePath) != null ? _a : "", data);
const browser = yield puppeteer.launch({
args: ["--no-sandbox", "--disable-setuid-sandbox", "--disable-gpu", "--disable-dev-shm-usage", "--no-zygote"]
});
const page = yield browser.newPage();
yield page.setContent(html, { waitUntil: "networkidle0" });
return {
content: yield page.pdf({
format: "A4",
printBackground: true,
margin: { top: "20px", bottom: "20px" }
}),
browser
};
});
}
streamTo(...args) {
throw new Error("Method not implemented.");
}
};
export {
PdfExporter
};