cloud-report
Version:
Collects and analyzes cloud resources
81 lines (80 loc) • 2.43 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const fs = require("fs");
const htmlGenerator = require("./html");
const pdfOptions = {
displayHeaderFooter: true,
footerTemplate: `
<div class="footer">
<hr>
<span class="copyright" style="float: left;">
Copyright © Eighty Two East IT Solutions Pvt Ltd ${new Date().getUTCFullYear()}
</span>
<span class="pageNumber" style="float: right;">
{{page}} of {{pages}}
</span>
</div>`,
format: "A4",
margin: {
bottom: "0.2in",
left: "0.2in",
right: "0.2in",
top: "0.2in",
},
};
const getPuppeteer = async () => {
try {
const puppeteer = require('puppeteer');
return await puppeteer.launch();
}
catch (error) {
if (error.code === 'MODULE_NOT_FOUND') {
console.log('Error(This package is used for local development) ', JSON.stringify(error, null, 2));
try {
const chromium = require('chrome-aws-lambda');
return await chromium.puppeteer.launch({
args: chromium.args,
defaultViewport: chromium.defaultViewport,
executablePath: await chromium.executablePath,
headless: chromium.headless
});
}
catch (_error) {
throw error;
}
}
}
};
async function createPDF(html) {
let browser = null;
try {
browser = await getPuppeteer();
const page = await browser.newPage();
await page.setContent(html);
return await page.pdf(pdfOptions);
}
catch (error) {
throw error;
}
finally {
if (browser) {
await browser.close();
}
}
}
async function generatePDF(reportData, options) {
try {
options = options || {};
const html = await htmlGenerator.generateHTML(reportData, options);
if (options.debug) {
console.log("./scan_report.html is generated");
fs.writeFileSync("scan_report.html", html);
}
const pdf = await createPDF(html);
return pdf;
}
catch (error) {
throw error;
}
}
exports.generatePDF = generatePDF;