Link to home
Start Free TrialLog in
Avatar of SueJStevens
SueJStevensFlag for United States of America

asked on

TCPDF HTML Table of Contents how can I create leading dots

I am using TCPDF to create my document.  I would like to use HTML TOC (see example_059.php here:  Example_059

However, I need to be able to include leaders (i.e., dots between the #TOC_DESCRIPTION# and the #TOC_PAGE_NUMBER#.

I can see that Example_045 (Example 045) does allow for leaders.

I just can not figure out how to add the leaders and use addHTMLTOC.  Any help would be much appreciated
Avatar of Ray Paseur
Ray Paseur
Flag of United States of America image

Please see: https://iconoun.com/demo/temp_suejstevens_toc.php

This merges example 059 and example 045.  It seems to work correctly.
<?php // demo/temp_suejstevens_toc.php
//============================================================+
// File name   : example_059.php
// Begin       : 2010-05-06
// Last Update : 2013-05-14
//
// Description : Example 059 for TCPDF class
//               Table Of Content using HTML templates.
//
// Author: Nicola Asuni
//
// (c) Copyright:
//               Nicola Asuni
//               Tecnick.com LTD
//               www.tecnick.com
//               info@tecnick.com
//============================================================+
error_reporting(E_ALL);
/**
 * Creates an example PDF TEST document using TCPDF
 * @package com.tecnick.tcpdf
 * @abstract TCPDF - Example: Table Of Content using HTML templates.
 * @author Nicola Asuni
 * @since 2010-05-06
 */

// Include the main TCPDF library (search for installation path).
// require_once('tcpdf_include.php');
require_once('tcpdf/tcpdf.php');

/**
 * TCPDF class extension with custom header and footer for TOC page
 */
class TOC_TCPDF extends TCPDF {

    /**
      * Overwrite Header() method.
     * @public
     */
    public function Header() {
        if ($this->tocpage) {
            // *** replace the following parent::Header() with your code for TOC page
            parent::Header();
        } else {
            // *** replace the following parent::Header() with your code for normal pages
            parent::Header();
        }
    }

    /**
      * Overwrite Footer() method.
     * @public
     */
    public function Footer() {
        if ($this->tocpage) {
            // *** replace the following parent::Footer() with your code for TOC page
            parent::Footer();
        } else {
            // *** replace the following parent::Footer() with your code for normal pages
            parent::Footer();
        }
    }

} // end of class

// create new PDF document
$pdf = new TOC_TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);

// set document information
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetAuthor('Nicola Asuni');
$pdf->SetTitle('TCPDF Example 059');
$pdf->SetSubject('TCPDF Tutorial');
$pdf->SetKeywords('TCPDF, PDF, example, test, guide');

// set default header data
$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 059', PDF_HEADER_STRING);

// set header and footer fonts
$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));

// set default monospaced font
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);

// set margins
$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
$pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);

// set auto page breaks
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);

// set image scale factor
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);

// set some language-dependent strings (optional)
if (@file_exists(dirname(__FILE__).'/lang/eng.php')) {
    require_once(dirname(__FILE__).'/lang/eng.php');
    $pdf->setLanguageArray($l);
}

// set font
$pdf->SetFont('helvetica', '', 10);

// ---------------------------------------------------------

// create some content ...

// add a page
$pdf->AddPage();

// set a bookmark for the current position
$pdf->Bookmark('Chapter 1', 0, 0, '', 'B', array(0,64,128));

// print a line using Cell()
$pdf->Cell(0, 10, 'Chapter 1', 0, 1, 'L');

$pdf->AddPage();
$pdf->Bookmark('Paragraph 1.1', 1, 0, '', '', array(128,0,0));
$pdf->Cell(0, 10, 'Paragraph 1.1', 0, 1, 'L');

$pdf->AddPage();
$pdf->Bookmark('Paragraph 1.2', 1, 0, '', '', array(128,0,0));
$pdf->Cell(0, 10, 'Paragraph 1.2', 0, 1, 'L');

$pdf->AddPage();
$pdf->Bookmark('Sub-Paragraph 1.2.1', 2, 0, '', 'I', array(0,128,0));
$pdf->Cell(0, 10, 'Sub-Paragraph 1.2.1', 0, 1, 'L');

$pdf->AddPage();
$pdf->Bookmark('Paragraph 1.3', 1, 0, '', '', array(128,0,0));
$pdf->Cell(0, 10, 'Paragraph 1.3', 0, 1, 'L');

// add some pages and bookmarks
for ($i = 2; $i < 12; $i++) {
    $pdf->AddPage();
    $pdf->Bookmark('Chapter '.$i, 0, 0, '', 'B', array(0,64,128));
    $pdf->Cell(0, 10, 'Chapter '.$i, 0, 1, 'L');
}


// . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

// add a new page for TOC
$pdf->addTOCPage();

// write the TOC title
$pdf->SetFont('times', 'B', 16);
$pdf->MultiCell(0, 0, 'Table Of Content', 0, 'C', 0, 1, '', '', true, 0);
$pdf->Ln();

$pdf->SetFont('dejavusans', '', 12);

// add a simple Table Of Content at first page
// (check the example n. 59 for the HTML version)
$pdf->addTOC(1, 'courier', '.', 'INDEX', 'B', array(128,0,0));

// end of TOC page
$pdf->endTOCPage();

// ---------------------------------------------------------

//Close and output PDF document
$pdf->Output('example_045.pdf', 'I');

//============================================================+
// END OF FILE
//============================================================+

Open in new window

Avatar of SueJStevens

ASKER

Ray,
Thank you!
I will take a close look at this and get back to you with any questions or issues.
-Sue
Ray,
I'm a little bit lost about the example you provided.  It seems to be the same as example 45 which does provide the leader dots but does not allow for more complex formatting.  In Example 59, I'm able to see specific HTML formatting but no leader dots.  I need to be able to merge the HTML version, keep the ability to format via HTML and keep the leader dots.
Thanks,
Sue
ASKER CERTIFIED SOLUTION
Avatar of Ray Paseur
Ray Paseur
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Ray,
I understand.
Thanks for your help.
Avatar of Kyle Santos
As per Ray's suggestion, I am suggesting Gigs for you.