protected void createPdfButton_Click(object sender, EventArgs e)
{
    // Create a PDF document
    Document pdfDocument = new Document();

    // Set license key received after purchase to use the converter in licensed mode
    // Leave it not set to use the converter in demo mode
    pdfDocument.LicenseKey = "fvDh8eDx4fHg4P/h8eLg/+Dj/+jo6Og=";

    // Add a PDF page to PDF document
    PdfPage pdfPage = pdfDocument.AddPage();

    try
    {
        // Create the document footer template
        pdfDocument.AddFooterTemplate(50);

        // ----- Add HTML with Page Numbering to Footer -----

        // Create a variable HTML element with page numbering
        string htmlStringWithPageNumbers = htmlWithPageNumbersTextBox.Text;
        string baseUrl = baseUrlTextBox.Text;
        HtmlToPdfVariableElement footerHtmlWithPageNumbers = new HtmlToPdfVariableElement(htmlStringWithPageNumbers, baseUrl);

        // Set the HTML element to fit the container height
        footerHtmlWithPageNumbers.FitHeight = true;

        // Add variable HTML element with page numbering to footer
        pdfDocument.Footer.AddElement(footerHtmlWithPageNumbers);

        // Optionally draw a line at the top of the footer
        if (drawFooterLineCheckBox.Checked)
        {
            float footerWidth = pdfDocument.Footer.Width;

            // Create a line element for the top of the footer
            LineElement footerLine = new LineElement(0, 0, footerWidth, 0);

            // Set line color
            footerLine.ForeColor = Color.Gray;

            // Add line element to the bottom of the footer
            pdfDocument.Footer.AddElement(footerLine);
        }

        // Create a HTML to PDF element to add to document
        HtmlToPdfElement htmlToPdfElement = new HtmlToPdfElement(0, 0, urlTextBox.Text);

        // Optionally set a delay before conversion to allow asynchonous scripts to finish
        htmlToPdfElement.ConversionDelay = 2;

        // Optionally add a space between footer and the page body
        // Leave this option not set for no spacing
        htmlToPdfElement.BottomSpacing = float.Parse(footerSpacingTextBox.Text);

        // Add the HTML to PDF element to document
        // This will raise the PrepareRenderPdfPageEvent event where the header and footer visibilit per page can be changed
        pdfPage.AddElement(htmlToPdfElement);

        // Save the PDF document in a memory buffer
        byte[] outPdfBuffer = pdfDocument.Save();

        // Write the memory buffer in a PDF file// Send the PDF as response to browser

        // Set response content type
        Response.AddHeader("Content-Type", "application/pdf");

        // Instruct the browser to open the PDF file as an attachment or inline
        Response.AddHeader("Content-Disposition", String.Format("attachment; filename=Page_Numbers_in_HTML.pdf; size={0}", outPdfBuffer.Length.ToString()));

        // Write the PDF document buffer to HTTP response
        Response.BinaryWrite(outPdfBuffer);

        // End the HTTP response and stop the current page processing
        Response.End();
    }
    finally
    {
        // Close the PDF document
        pdfDocument.Close();
    }
}