Skip to content

Latest commit

 

History

History
141 lines (107 loc) · 2.8 KB

extension.md

File metadata and controls

141 lines (107 loc) · 2.8 KB

Extensions and Tags

back

Html Tags

All the existing tags are under the namespace \Spipu\Html2Pdf\Tag.

A tag must implement the interface \Spipu\Html2Pdf\Tag\TagInterface.

A tag can extends the abstract class \Spipu\Html2Pdf\Tag\AbstractTag to implement some generic methods.

Here is a tag example that will do nothing:

<?php
namespace Example\Html2Pdf\Tag;

use \Spipu\Html2Pdf\Tag\AbstractTag;

/**
 * Tag Example
 */
class Example extends AbstractTag
{
    /**
     * get the name of the tag
     *
     * @return string
     */
    public function getName()
    {
        return 'example';
    }

    /**
     * Open the HTML tag
     *
     * @param array $properties properties of the HTML tag
     *
     * @return boolean
     */
    public function open($properties)
    {
        // there is nothing to do here

        return true;
    }

    /**
     * Close the HTML tag
     *
     * @param array $properties properties of the HTML tag
     *
     * @return boolean
     */
    public function close($properties)
    {
        // there is nothing to do here

        return true;
    }
}

Then, you will be able to use the <example> html tag.

Look at all the existing tags in the /src/Tag folder to see examples.

Extensions

In order to add your new tags to Html2Pdf, you must a extension.

An extension must implement the interface \Spipu\Html2Pdf\Extension\ExtensionInterface.

You must implement the getTags method that will return a list of tag objects.

<?php
/**
 * Extension Example
 */
namespace Example\Html2Pdf\Extension;

use \Spipu\Html2Pdf\Extension\ExtensionInterface;

/**
 * Class MyExtension
 */
class MyExtension implements ExtensionInterface
{
    /**
     * @var array
     */
    private $tagDefinitions = array();

    /**
     * {@inheritDoc}
     */
    public function getName()
    {
        return 'example_extension';
    }

    /**
     * {@inheritDoc}
     */
    public function getTags()
    {
        if (empty($this->tagDefinitions)) {
            $this->tagDefinitions = array(
                new \Example\Html2Pdf\Tag\Example(),
                new \Example\Html2Pdf\Tag\Other(),
            );
        }

        return $this->tagDefinitions;
    }
}

Then, you can add your extension to Html2Pdf with the following method:

$html2pdf->addExtension(new \Example\Html2Pdf\Extension\MyExtension());

The following core extensions are automatically added to Html2pdf:

  • \Spipu\Html2Pdf\Extension\Core\HtmlExtension
  • \Spipu\Html2Pdf\Extension\Core\SvgExtension

It contains all the native tags.

Overriding

If an extension has the same name that an already added extension, it will replace the first one.

If tag has the same name that an already added tag throw an extension, it will replace the first one.

back