Closed AliYar-Khan closed 1 year ago
I am using it with loop back. My Remoting method is as follows:
Visitor.getVisitorsPDF = function (res, dateInStart, dateInEnd, employeeSiteId, name, visitorCompany, employeeName, typeId, shift, cb) { Visitor.app.models.user.testAccess(res).then((current) => { let dStart = new Date(dateInStart).getTime(); let dEnd = new Date(dateInEnd).getTime(); dateInStart = new Date(dateInStart).getTime() - 60000000; dateInEnd = new Date(dateInEnd).getTime() + 60000000; res.set('Content-Type', 'application/octet-stream'); res.set('Content-Disposition', 'attachment;filename="visitors.pdf"'); let query = { where: { and: [{ timeIn: { gte: dStart, lt: dEnd } }] } }; if (employeeSiteId) { query.where.and.push({ siteId: Number(employeeSiteId) }); } if (typeId !== -1) { query.where.and.push({ typeId }); } if (current.accountId != SUPER_USER) { query.where.accountId = current.accountId; } Visitor._getVisitors(query, current).then( (visitors) => { let visitorsFiltered = visitors.filter((v) => { if (!v.tztimeIn) return v; let d = v.timeIn + v.tztimeIn * 60000; if (dStart < d && d < dEnd) return v; }); if (name) visitorsFiltered = visitorsFiltered.filter((v) => { if (v.name && v.name.toLowerCase().indexOf(name.toLowerCase()) > -1) return v; }); if (visitorCompany) visitorsFiltered = visitorsFiltered.filter((v) => { if (v.company && v.company.toLowerCase().indexOf(visitorCompany.toLowerCase()) > -1) return v; }); if (employeeName) { visitorsFiltered = visitorsFiltered.filter((v) => { if (v.employeeName && v.employeeName.toLowerCase().indexOf(employeeName.toLowerCase()) > -1) return v; }); } visitorsFiltered.shift = shift; Visitor._getVisitorsPDF(visitorsFiltered).then( (result) => { res.send(result); }, (err) => cb(err), ); }, (error) => cb(error), ); }); }; Visitor.remoteMethod('getVisitorsPDF', { description: 'Get visitors list in PDF file', accepts: [ { arg: 'res', type: 'object', http: { source: 'res' } }, { arg: 'dateInStart', type: 'string' }, { arg: 'dateInEnd', type: 'string' }, { arg: 'employeeSiteId', type: 'string' }, { arg: 'name', type: 'string' }, { arg: 'visitorCompany', type: 'string' }, { arg: 'employeeName', type: 'string' }, { arg: 'typeId', type: 'number' }, { arg: 'shift', type: 'number' }, ], returns: { arg: 'content', type: 'Buffer' }, http: { path: '/getpdf', verb: 'get' }, });
And pdf method is as follows :
Visitor._getVisitorsPDF = async function (visitors) { let file = { content: '<h1>Hello wordl</h1>' }; let options = { format: 'A4' }; html_to_pdf.generatePdf(file, options).then((pdfBuffer) => { console.log('PDF Buffer:-', pdfBuffer); return pdfBuffer; }); };
But the returned pdf is corrupted can't load the pdf what is the issue ?
@AliYar-Khan any resolution of this issue?
@adamalexander I abandoned this and used the pdfKit for my purpose
I am using it with loop back. My Remoting method is as follows:
And pdf method is as follows :
But the returned pdf is corrupted can't load the pdf what is the issue ?