Amba-Emails/emails/utils/generateTicketPDF.ts

45 lines
993 B
TypeScript

import React from 'react';
import { renderToBuffer } from '@react-pdf/renderer';
import QRCode from 'qrcode';
import { TicketPDF } from '../ticket-pdf';
interface TicketData {
userName?: string;
eventName?: string;
eventDate?: string;
eventTime?: string;
venue?: string;
ticketType?: string;
amount?: string;
ticketNumber?: string;
purchaseDate?: string;
orderId?: string;
seatNumber?: string;
section?: string;
}
export async function generateTicketPDF(data: TicketData): Promise<Buffer> {
// Generate QR code as data URL
const qrCodeData = data.ticketNumber || `TICKET-${Date.now()}`;
const qrCodeDataUrl = await QRCode.toDataURL(qrCodeData, {
width: 300,
margin: 2,
color: {
dark: '#000000',
light: '#FFFFFF',
},
});
// Create PDF document
const pdfDoc = React.createElement(TicketPDF, {
...data,
qrCodeDataUrl,
});
// Render to buffer
const pdfBuffer = await renderToBuffer(pdfDoc);
return pdfBuffer;
}