public override Task <GenerateDefaultInvoiceResult> ExecuteAsync(GenerateInvoiceContext request)
        {
            GenerateDefaultInvoiceResult retResult = new GenerateDefaultInvoiceResult();

            //https://help.syncfusion.com/file-formats/pdf/getting-started
            PdfGenerator pdf = new PdfGenerator();

            pdf.Setup("Invoice");

            float y = GenerateBodyHeader(request, pdf);

            y = GenerateBody(request, pdf, y, !request.SimpleFormat);

            //if the next bit (total + signature) might be split - rather create new page
            y = pdf.IncrementY(y, 0, FOOTER_HEIGHT, 180); //110 + 70 = estimated height of total + signature

            y = GenerateTotal(request, pdf, y);

            y = GenerateSignature(request, pdf, y);

            y = GenerateTermsBody(request, pdf, y);

            GenerateFooter(request, pdf); //BUG: Generate footer before body to cater for bug where paginatebounds not taken into account for pdfLightTable
            //Save the document.
            //await pdf.SaveAsync(request.FileName, launchFile: false);
            retResult.PdfResult = pdf.SaveDocumentAsByteArray();

            return(Task.FromResult(retResult));
        }