मैं रीयलटाइम डेटाबेस ट्रिगर का उपयोग कर फायरबेस क्लाउड फ़ंक्शंस पर पीडीएफ उत्पन्न करने के लिए पीडीएफमेक (PDFKit
का एक संस्करण) का उपयोग कर रहा हूं। फ़ंक्शन डेटाबेस से सभी प्रासंगिक डेटा प्राप्त करता है और उसके बाद उसे पीडीएफ उत्पन्न करने वाले फ़ंक्शन पर भेज देता है।फायरबेस क्लाउड फ़ंक्शन पर पीडीएफमेक के साथ वादे का उपयोग
यह सब वादा का उपयोग करके किया जाता है। सब कुछ उस बिंदु तक ठीक काम करता है जब पीडीएफ वास्तव में उत्पन्न होता है।
यहाँ मेरी मुख्य घटना श्रोता में कोड है:
exports.generatePDF = (fonts, companyInfo, quotationData, storage) => {
const printer = new PdfPrinter(fonts);
const docDefinition = {
content: [
{
text: [
{
text: `${companyInfo.title}\n`,
style: 'companyHeader',
},
`${companyInfo.addr_line1}, ${companyInfo.addr_line2}\n`,
`${companyInfo.city} (${companyInfo.state}) - INDIA\n`,
`Email: ${companyInfo.email} • Web: ${companyInfo.website}\n`,
`Phone: ${companyInfo.phone}\n`,
`GSTIN: ${companyInfo.gst_registration_number} • PAN: AARFK6552G\n`,
],
style: 'body',
//absolutePosition: {x: 20, y: 45}
},
],
styles: {
companyHeader: {
fontSize: 18,
bold: true,
},
body: {
fontSize: 10,
},
},
pageMargins: 20,
};
return new Promise((resolve, reject) => {
// const bucket = storage.bucket(`${PROJECT_ID}.appspot.com`);
// const filename = `${Date.now()}-quotation.pdf`;
// const file = bucket.file(filename);
// const stream = file.createWriteStream({ resumable: false });
const pdfDoc = printer.createPdfKitDocument(docDefinition);
// pdfDoc.pipe(stream);
const chunks = [];
let result = null;
pdfDoc.on('data', (chunk) => {
chunks.push(chunk);
});
pdfDoc.on('error', (err) => {
reject(err);
});
pdfDoc.on('end',() => {
result = Buffer.concat(chunks);
resolve(result);
});
pdfDoc.end();
});
};
यहाँ क्या गलत हो सकता है कि वादा और इस तरह उद्धरण रोक रहा है:
exports.handler = (admin, event, storage) => {
const quotationData = event.data.val();
// We must return a Promise when performing async tasks inside Functions
// Eg: Writing to realtime db
const companyId = event.params.companyId;
settings.getCompanyProfile(admin, companyId)
.then((profile) => {
return quotPdfHelper.generatePDF(fonts, profile, quotationData, storage);
})
.then(() => {
console.log('Generation Successful. Pass for email');
})
.catch((err) => {
console.log(`Error: ${err}`);
});
};
पीडीएफ उत्पन्न करने के लिए, यहाँ मेरा कोड यह है उद्देश्य के रूप में निष्पादित करने के लिए कोड?
firebase लॉग पर, सब मैं देख Function execution took 3288 ms, finished with status: 'ok'