var html_to_pdf = require('html-pdf-node');
exports.handler = async function (event, context) {
console.log('body', event.body);
const pdfBuffer = await generateCertificate(event.body);
return {
isBase64Encoded: true,
statusCode: 200,
headers: { 'Content-Type': 'application/pdf' },
body: pdfBuffer,
};
};
function getHtmlTemplate(body) {
return `
Certificate
${body}
`;
}
function getProfessionalTheme({
studentName,
courseName,
courseDescription,
orgLogoUrl,
orgName,
}) {
const themeBody = `
Certificate
of completion
This is to certify that
${studentName}
has successfully completed introductory courses in
${courseDescription}
${orgName}
`;
return getHtmlTemplate(themeBody);
}
function getPlainTheme({
studentName,
courseName,
courseDescription,
orgLogoUrl,
orgName,
}) {
const themeBody = `
${orgName}
Certificate of completion
This is to certify that
${studentName}
has successfully completed a courses in
${courseDescription}
`;
return getHtmlTemplate(themeBody);
}
const generateCertificate = ({
theme,
studentName,
courseName,
courseDescription,
orgLogoUrl,
orgName,
}) => {
const params = {
studentName,
courseName,
courseDescription,
orgLogoUrl,
orgName,
};
console.log('theme', theme);
const html =
theme === 'plain' ? getPlainTheme(params) : getProfessionalTheme(params);
console.log('body', html);
return html_to_pdf.generatePdf({ content: html }, { format: 'A4' });
};