# PDFBundle
The Siphoc PDF Bundle provides an easy way to create PDF's from your views.

[![Build Status](https://travis-ci.org/siphoc/PdfBundle.png?branch=master)](https://travis-ci.org/siphoc/PdfBundle)

## Installation

### Step 1: Download the bundle using Composer
Add SiphocPdfBundle to composer.

    {
        "require": {
            "siphoc/pdf-bundle": "1.2.*"
        }
    }

Install the bundle:

    $ composer.phar update siphoc/pdf-bundle

Composer will install the bundle with the required dependencies.

### Step 2: Enable the bundle
In your AppKernel add the following:

    <?php
    // app/AppKernel.php

    public function registerBundles()
    {
        $bundles = array(
            // ...
            new Siphoc\PdfBundle\SiphocPdfBundle(),
        );
    }

### Step 3: configure your bundle
In your config.yml file:

    siphoc_pdf:
        basepath: "%kernel.root_dir%/../web"
        binary: "/usr/local/bin/wkhtmltopdf"
        options:
            'lowquality': false
            'enable-javascript': true
            'debug-javascript': true

## Usage

### Download
In your controller, you can download the contents of your controller like this:

    $pdfGenerator = $this->get('siphoc.pdf.generator');
    $pdfGenerator->setName('my_pdf.pdf');
    return $pdfGenerator->downloadFromView(
        'AcmeDemoBundle:Demo:index.html.twig', array(
            'name' => $name,
        )
    );

### Inline display
There's also an option to display the contents in the browser. To do so, use the
following example:

    $pdfGenerator = $this->get('siphoc.pdf.generator');
    $pdfGenerator->setName('my_pdf.pdf');
    return $pdfGenerator->displayForView(
        'AcmeDemoBundle:Demo:index.html.twig', array(
            'name' => $name,
        )
    );


## Documentation
The main Documentation can be found in [Resources/doc/index.html](https://github.com/siphoc/PdfBundle/tree/master/Resources/doc). It is
auto-generated by PHPDocumentor2. The directory itself is excluded through git
because we use the [PHPDoc Markdown](https://github.com/evert/phpdoc-md) plugin
to create proper MD files to include in Git.

If you want to contribute, be sure to update the documentation and run both
[PHPDocumentor2](http://www.phpdoc.org/) and PHPDoc Markdown.
This way the documentation keeps up to date properly.

## Development
This bundle is mainly created and maintained for [Darwin Analytics](https://github.com/darwinanalytics/).

## Tests
For tests I've used PHPUnit. Contributions need to be supported with tests.

## License
This bundle is under the MIT License.

## Dependencies

### Buzz
For external calls, I've included the [Buzz](https://github.com/kriswallsmith/Buzz)
Bundle from [@kriswallsmith](https://github.com/kriswallsmith).

### Snappy
To create the actual PDF. We're using [Snappy](https://github.com/knplabs/snappy).
This has the [wkhtmltopdf](http://code.google.com/p/wkhtmltopdf/) dependency. Be
sure that you use the latest version (>=0.11.0_rc1).

### Symfony
Since this is a Symfony bundle, there are some Symfony dependencies.

#### Http Foundation
To create a proper response, I've implemented the Symfony 2.1 [Http Foundation](https://github.com/symfony/HttpFoundation)
component.

#### Templating
To render the views automatically, I've added the [templating component](https://github.com/symfony/Templating)
to force a proper templating engine.

#### HttpKernel
Since version 1.1.2 we've implemented a logger instance. This depends on the
Symfony2 [HttpKernel](https://github.com/symfony/HttpKernel) component.
