EVO HTML to PDF Converter

Add Header and Footer in External PDFs

EVO PDF Client for .NET Documentation

EVO HTML to PDF Converter allows you to apply headers and footers on the external documents added before or after the conversion result. You can control the visibility of the header and footer in first page of the external PDF document using the parameters of the DocumentInsertDocument(Int32, String, Boolean, Boolean, Boolean) and DocumentAppendDocument(String, Boolean, Boolean, Boolean) methods.

Code Sample - Add Header and Footer In External PDF Documents

C#
protected void createPdf()
{
    // Get the server IP and port
    String serverIP = textBoxServerIP.Text;
    uint serverPort = uint.Parse(textBoxServerPort.Text);

    // Create a PDF document
    Document pdfDocument = null;
    if (radioButtonUseTcpService.Checked)
        pdfDocument = new Document(serverIP, serverPort);
    else
        pdfDocument = new Document(true, textBoxWebServiceUrl.Text);

    // Set optional service password
    if (textBoxServicePassword.Text.Length > 0)
        pdfDocument.ServicePassword = textBoxServicePassword.Text;

    // 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 = "4W9+bn19bn5ue2B+bn1/YH98YHd3d3c=";

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

    // Add a default document header
    AddHeader(pdfDocument, true);

    // Add a default document footer
    AddFooter(pdfDocument, true, true);

    // 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;

    // Add HTML to PDF element to document
    pdfPage.AddElement(htmlToPdfElement);

    // Insert an external PDF document in the beginning of the final PDF document
    string pdfFileBefore = Server.MapPath("~/DemoAppFiles/Input/PDF_Files/Merge_Before_Conversion.pdf");
    pdfDocument.InsertDocument(0, pdfFileBefore, addHeaderFooterInInsertedPdfCheckBox.Checked,
                    showHeaderInFirstPageCheckBox.Checked, showFooterInFirstPageCheckBox.Checked);

    // Append an external PDF document at the end of the final PDF document
    string pdfFileAfter = Server.MapPath("~/DemoAppFiles/Input/PDF_Files/Merge_After_Conversion.pdf");
    pdfDocument.AppendDocument(pdfFileAfter, addHeaderFooterInAppendedPdfCheckBox.Checked, true, true);

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

/// <summary>
/// Add a header to document
/// </summary>
/// <param name="pdfDocument">The PDF document object</param>
/// <param name="drawHeaderLine">A flag indicating if a line should be drawn at the bottom of the header</param>
private void AddHeader(Document pdfDocument, bool drawHeaderLine)
{
    string headerHtmlString = System.IO.File.ReadAllText(Server.MapPath("~/DemoAppFiles/Input/HTML_Files/Header_HTML.html"));
    string headerBaseUrl = "http://www.evopdf.com/demo/DemoAppFiles/Input/HTML_Files/";

    // Create the document footer template
    pdfDocument.AddHeaderTemplate(60);

    // Create a HTML element to be added in header
    HtmlToPdfElement headerHtml = new HtmlToPdfElement(headerHtmlString, headerBaseUrl);

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

    // Add HTML element to header
    pdfDocument.Header.AddElement(headerHtml);

    if (drawHeaderLine)
    {
        float headerWidth = pdfDocument.GetPage(0).PageSize.Width;
        float headerHeight = pdfDocument.Header.Height;

        // Create a line element for the bottom of the header
        LineElement headerLine = new LineElement(0, headerHeight - 1, headerWidth, headerHeight - 1);

        // Set line color
        headerLine.ForeColor = RgbColor.Gray;

        // Add line element to the bottom of the header
        pdfDocument.Header.AddElement(headerLine);
    }
}

/// <summary>
/// Add a footer to document
/// </summary>
/// <param name="pdfDocument">The PDF document object</param>
/// <param name="addPageNumbers">A flag indicating if the page numbering is present in footer</param>
/// <param name="drawFooterLine">A flag indicating if a line should be drawn at the top of the footer</param>
private void AddFooter(Document pdfDocument, bool addPageNumbers, bool drawFooterLine)
{
    string footerHtmlString = System.IO.File.ReadAllText(Server.MapPath("~/DemoAppFiles/Input/HTML_Files/Footer_HTML.html"));
    string footerBaseUrl = "http://www.evopdf.com/demo/DemoAppFiles/Input/HTML_Files/";

    // Create the document footer template
    pdfDocument.AddFooterTemplate(60);

    // Set footer background color
    RectangleElement backColorRectangle = new RectangleElement(0, 0, pdfDocument.Footer.Width, pdfDocument.Footer.Height);
    backColorRectangle.BackColor = RgbColor.WhiteSmoke;
    pdfDocument.Footer.AddElement(backColorRectangle);

    // Create a HTML element to be added in footer
    HtmlToPdfElement footerHtml = new HtmlToPdfElement(footerHtmlString, footerBaseUrl);

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

    // Add HTML element to footer
    pdfDocument.Footer.AddElement(footerHtml);

    // Add page numbering
    if (addPageNumbers)
    {
        // Create a text element with page numbering place holders &p; and & P;
        TextElement footerText = new TextElement(0, 30, "Page &p; of &P;  ", new PdfFont("Times New Roman", 10, true));

        // Align the text at the right of the footer
        footerText.TextAlign = HorizontalTextAlign.Right;

        // Set page numbering text color
        footerText.ForeColor = RgbColor.Navy;

        // Embed the text element font in PDF
        footerText.EmbedSysFont = true;

        // Add the text element to footer
        pdfDocument.Footer.AddElement(footerText);
    }

    if (drawFooterLine)
    {
        float footerWidth = pdfDocument.GetPage(0).PageSize.Width;

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

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

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