const PDFDocument = require('pdfkit'); const { spawn } = require('child_process'); module.exports = { generateFile(username, studentId, req, res) { // Create the output text const infoArray = [ 'Username:', `${username}`, '', 'Email:', `${username}@kvcc.me.edu`, '', 'Student ID:', `${studentId}`, '', 'Note: When signing into the MyKV Portal, use your Username not your Email.', '', 'For further assistance contact ithelp@mainecc.edu' ]; const infoString = infoArray.join('\n'); // Create a new PDF document in-memory const doc = new PDFDocument({ size: [204, 400], margin: 5 }); // Store the PDF in a buffer let buffers = []; doc.on('data', buffers.push.bind(buffers)); doc.on('end', () => { // Combine all the chunks into a single buffer const pdfData = Buffer.concat(buffers); // Set the response headers to serve the PDF file res.writeHead(200, { 'Content-Type': 'application/pdf', 'Content-Disposition': 'inline; filename="output.pdf"', // Or 'attachment' for download 'Content-Length': pdfData.length, }); // Send the PDF file as the response res.end(pdfData); }); // Add content (image, text) to the PDF doc.image('./public/itslogo.jpg', { fit: [200, 100], align: 'center', valign: 'top', }); doc.moveDown(); doc.moveDown(); doc.moveDown(); doc.moveDown(); doc.moveDown(); doc.moveDown(); doc.moveDown(); doc.fontSize(16).text(infoString, { align: 'left', }); // Finalize the PDF doc.end(); }, generatePdf() { } }