Hi @bjrmatos ,
Sorry for the delay in reply.
Below is the code snippet that I have written (this is working fine in local but in dev stack it is throwing this error).
public async genratePDFMailBody(templateId, templateData, logger: LogHelper, complexReport?) {
let content = null;
//S3 implementation replace below code
var s3utils = new S3Utils();
content = await s3utils.getRequestBody(templateId);
logger.info('Content from S3 ', content);
content = content.toString('utf8');
// Initialize jsreport with phantom configuration
var jsreport = require('@jsreport/jsreport-core')();
jsreport.use(require('@jsreport/jsreport-phantom-pdf')());
jsreport.use(require('@jsreport/jsreport-handlebars')());
jsreport.use(require('@jsreport/jsreport-assets')({
searchOnDiskIfNotFoundInStore: true,
allowedFiles: "**/*.*",
}));
let data = await jsreport.init().then(function () {
logger.info("Template Data: %s", JSON.stringify(templateData));
return jsreport.render({
template: {
content: content,
engine: 'handlebars',
recipe: 'phantom-pdf',
helpers: `
function now() {return new Date().toLocaleDateString()}
function nowPlus20Days() {var date = new Date();date.setDate(date.getDate() + 20);return date.toLocaleDateString()}
function commaSeperation(num){if(num===null || num===0) {return 0;} else {return parseFloat(num).toLocaleString('en-us', {minimumFractionDigits: 2});}}
function due(total, tax){return commaSeperation((parseFloat(total)+parseFloat(tax)).toFixed(2))}
function totalSubGroup(items) {var sum = 0;items.forEach(function(i) {sum +=parseFloat(i.amountPrinted);});return parseFloat(sum).toFixed(2);}
function groupPercent(subGrpTotal,printTotal){var a = Math.round(parseInt((parseFloat(subGrpTotal)/parseFloat(printTotal))* parseInt(100)).toFixed(2));return parseFloat(a);}
function subGrpTax(subGrpTotal, taxRate){return commaSeperation((parseFloat(subGrpTotal)* parseFloat(taxRate)).toFixed(2))}
function distinctValCount(data) {var uniqueNames = []; var uniqueObj = [];for(i = 0; i< data.length; i++){ if(uniqueNames.indexOf(data[i].printerSticker) === -1){uniqueObj.push(data[i]);uniqueNames.push(data[i].printerSticker); }} return parseInt(uniqueObj.length);}
function toCamelCase(str){ return str.split(' ').join('_')}
function monoTotal(items,monopercent){var sum = 0;var a=0;items.forEach(function(i){ if(i.name =='Monochrome Printing'){ sum +=parseFloat(i.price);}}); a = sum *monopercent; return parseFloat(a).toFixed(2); }
function colorTotal(items,colorpercent){var sum = 0;var a=0; items.forEach(function(i) {if(i.name =='Color Printing'){sum +=parseFloat(i.price);}});var a = sum *colorpercent;return parseFloat(a).toFixed(2);}
function printedTotal(monototal,colortotal){var sum = 0;sum= parseFloat(monototal)+parseFloat(colortotal);return parseFloat(sum).toFixed(2);}
function totalWtTax(tax, printTotal){ var sum=0;sum+=parseFloat(printTotal)+parseFloat(tax);return parseFloat(sum).toFixed(2);}
function total(items){var sum = 0; items.forEach(function (i) {console.log('Calculating item ' + i.name + '; you should see this message in debug run'); sum += i.price;}) return sum;}
`
},
data: templateData
}).then(function (resp) {
return resp.content;
});
}).catch(function (e) {
logger.error("Rendring error: ", ErrorType.RenderingError, e, JSON.stringify(e));
return null;
});
return data;
}
Template is Invoice template which we have online jsreport playground(without style sheet and Asset files).
[0_1739892019743_Invoice](Uploading 100%)
Error I am getting
{ "code": "WORKER_CRASHED" }
Please look into this issue and help.
Thanks