मैं क्लाइंट को नोड.जेएस में पीडीएफकिट का उपयोग करके उत्पन्न एक पीडीएफ फाइल भेजने की कोशिश कर रहा हूं।
अगर मेरे पीडीएफ में कोई छवि है, तो मेरा कोड निम्न त्रुटि देगा। अन्यथा (बिना किसी छवि के), यह कोड त्रुटियों के बिना काम करेगा
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
यह मेरा कोड है
var doc = new PDFDocument({
bufferPages: true,
}),
svg = mySvg;
SVGtoPDF(doc, svg, 0, 0);
let buffers = [];
doc.on("data", buffers.push.bind(buffers));
doc.on("end", () => {
let pdfData = Buffer.concat(buffers);
ctx.res
.writeHead(200, {
"Content-Length": Buffer.byteLength(pdfData),
"Content-Type": "application/pdf",
"Content-disposition": "attachment;filename=file.pdf",
})
.end(pdfData);
});
doc.end();
मैं अपने बैकएंड ढांचे के रूप में स्ट्रैपी का उपयोग कर रहा हूं। जब मैंने सर्वर पर फ़ाइल लिखने की कोशिश की, तो यह ठीक काम करेगा। लेकिन मुझे सर्वर में स्टोर किए बिना फाइल भेजने की जरूरत है।
1 उत्तर
मुझे लगता है कि doc.pipe(ctx.res) में समस्या है। .end(pdfData) . के बाद जोड़ने का प्रयास करें
res.writeHead(200, {
'Content-Type': 'application/pdf',
'Access-Control-Allow-Origin': '*',
'Content-Disposition': `attachment; filename=${fileName}`,
});
doc.pipe(ctx.res);
doc.end();
मेरे लिए यह ठीक काम करता है, लेकिन 3-4 डाउनलोड के बाद प्रतिक्रिया का समय समाप्त हो गया है। प्रारंभ दस्तावेज़ पर doc.on("data", buffers.push.bind(buffers)); ले जाया गया
let buffers = [];
doc.on('data', buffers.push.bind(buffers));
/* doc body here */
doc.text('pdf');
doc.text('pdf2');
doc.text('pdf3');
doc.on('end', () => {
const pdfData = Buffer.concat(buffers);
res.writeHead(200, {
'Content-Length': Buffer.byteLength(pdfData),
'Content-Type': 'application/pdf',
'Content-disposition': `attachment; filename=${filename}.pdf`,
'Access-Control-Allow-Origin': '*',
}).end(pdfData);
});
doc.end();
संबंधित सवाल
नए सवाल
node.js
Node.js एक घटना-आधारित, गैर-अवरोधक, अतुल्यकालिक I / O रनटाइम है जो Google के V8 जावास्क्रिप्ट इंजन और libuv लाइब्रेरी का उपयोग करता है। इसका उपयोग उन अनुप्रयोगों को विकसित करने के लिए किया जाता है जो क्लाइंट पर और साथ ही सर्वर साइड पर जावास्क्रिप्ट को चलाने की क्षमता का भारी उपयोग करते हैं और इसलिए कोड के पुन: प्रयोज्य और संदर्भ स्विचिंग की कमी से लाभान्वित होते हैं।