EVO HTML to PDF Converter

Table of Contents for Multiple HTMLs

EVO PDF Client for .NET Documentation

EVO HTML to PDF Converter allows you to merge multiple HTML document into a single PDF document and also merge the table of contents generated for each HTML document in an unified table of contents. The merged table of contents is controlled by the DocumentTableOfContents similar to HtmlToPdfConverterTableOfContentsOptions property. The HtmlToPdfElementTableOfContentsEnabled property controls if the table of contents for a HTML document is included or not in the unified table of contents of the PDF document.

Code Sample - Merge Table of Contents from Multiple HTML Pages

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

    // Create the PDF document where to add the HTML documents
    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=";

    // Create a PDF page where to add the first HTML
    PdfPage firstPdfPage = pdfDocument.AddPage();

    // Enable the creation of a table of contents from H1 to H6 tags found in HTML
    pdfDocument.TableOfContents.AutoTocItemsEnabled = autoTableOfContentsCheckBox.Checked;

    // Optionally set the table of contents title
    pdfDocument.TableOfContents.Title = "Table of Contents";

    // Optionally set the title style using CSS sttributes
    pdfDocument.TableOfContents.TitleStyle = "color:navy; font-family:'Times New Roman'; font-size:28px; font-weight:normal";

    // Optionally set the style of level 1 items in table of contents
    string level1TextStyle = "color:black; font-family:'Times New Roman'; font-size:20px; font-weight:normal; font-style:normal; background-color:#F0F0F0";
    pdfDocument.TableOfContents.SetItemStyle(1, level1TextStyle);

    // Optionally set the page numbers style of level 1 items in table of contents
    string level1PageNumberStyle = "color:black; padding-right:3px; background-color:#F0F0F0; font-size:14px; font-weight:bold";
    pdfDocument.TableOfContents.SetPageNumberStyle(1, level1PageNumberStyle);

    // Create the first HTML to PDF element
    HtmlToPdfElement firstHtml = new HtmlToPdfElement(0, 0, firstUrlTextBox.Text);

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

    // Enable or disable the table of contents for the first HTML document
    firstHtml.TableOfContentsEnabled = includeFirstHtmlTocCheckBox.Checked;

    // Add the first HTML to PDF document
    firstPdfPage.AddElement(firstHtml);

    PdfPage secondPdfPage = null;

    // Create the second HTML to PDF element
    HtmlToPdfElement secondHtml = new HtmlToPdfElement(0, 0, secondUrlTextBox.Text);

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

    // Enable or disable the table of contents for the second HTML document
    secondHtml.TableOfContentsEnabled = includeSecondHtmlTocCheckBox.Checked;

    if (startNewPageCheckBox.Checked)
    {
        // Create a PDF page where to add the second HTML
        secondPdfPage = pdfDocument.AddPage();

        // Add the second HTML to PDF document
        secondPdfPage.AddElement(secondHtml);
    }
    else
    {
        // Add the second HTML right after the first one
        pdfDocument.AddElement(secondHtml);
    }

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