bushidoio/pdf-bundle

BushidoIOPDFBundle

Installs: 45

Dependents: 0

Suggesters: 0

Security: 0

Stars: 1

Watchers: 1

Forks: 0

Type:symfony-bundle

v2.0.0 2018-02-17 21:10 UTC

This package is not auto-updated.

Last update: 2024-04-13 15:01:11 UTC


README

The BushidoIOPDFBundle adds PDF file creation support in Symfony.

Features included:

  • PDF creation from HTML string content
  • Symfony\Component\HttpFoundation\Response object encapsulation with application/pdf content type
  • Temporal data and fonts paths can be located inside or outside Symfony app folder tree

Installation

Step 1: Composer

Add the following require line to the composer.json file:

{
    "require": {
        "bushidoio/pdf-bundle": "dev-master"
    }
}

And actually install it in your project using Composer:

php composer.phar install

You can also do this in one step with this command:

$ php composer.phar require bushidoio/pdf-bundle "dev-master"

Step 2: Enable the bundle

Enable the bundle in the kernel:

<?php
// app/AppKernel.php

public function registerBundles()
{
    $bundles = array(
        // ...
        new BushidoIO\PDFBundle\BushidoIOPDFBundle(),
    );
}

Configuration

Temporal content folders can be configured in app/config/config.yml. By default both tmp and ttffontdatapath folder will be stored in app/cache. Be sure you have write permissions on both folders.

bushidoio_pdf:
    tmp: ~
    ttffontdatapath: ~

Usage examples

You can transform any HTML string to PDF with the bushidoio_pdf service:

public function indexAction()
{
    ...
    $PDFService = $this->get('bushidoio_pdf');
    $html = '...';
    $pdf = $PDFService->createPDFFromHtml($html);
    ...
}

You can use Twig templates, or anything you like, to create the HTML string:

public function indexAction()
{
    ...
    $PDFService = $this->get('bushidoio_pdf');
    $html = $this->get('twig')->render(
        'default/index.html.twig',
        array(
            'greeting' => 'Hi'
        )
    );
    $pdf = $PDFService->createPDFFromHtml($html);
    ...
}

With the createResponse method a Symfony\Component\HttpFoundation\Response object is returned with application/pdf content type that will be directly downloaded if returned in a controller action:

public function indexAction()
{
    $PDFService = $this->get('bushidoio_pdf');
    $html = $this->get('twig')->render(
        'default/index.html.twig',
        array(
            'greeting' => 'Hi'
        )
    );
    
    return $PDFService->createResponse($html);
}