Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

marcostastny/MassivePdfBundle

Open more actions menu
 
 

Repository files navigation

MassivePdfBundle

Built upon KnpSnappyBundle: https://github.com/KnpLabs/KnpSnappyBundle

Installation

Install the bundle with composer.

composer require massive/pdf-bundle

Add bundle to your symfony kernel.

new Knp\Bundle\SnappyBundle\KnpSnappyBundle(),
new Massive\Bundle\PdfBundle\MassivePdfBundle(),

Install wkhtmltopdf

Ubuntu

apt-get install wkhtmltopdf
apt-get install xvfb
echo ‘xvfb-run –server-args=”-screen 0, 1024x768x24″ /usr/bin/wkhtmltopdf $*’ > /usr/bin/wkhtmltopdf.sh
chmod a+x /usr/bin/wkhtmltopdf.sh
ln -s /usr/bin/wkhtmltopdf.sh /usr/local/bin/wkhtmltopdf
wkhtmltopdf http://www.google.com output.pdf

MacOSX

http://wkhtmltopdf.org/downloads.html

Configure Knp Snappy Bundle**

See KnpSnappyBundle for configuration.

Usage

========

Controller Trait

The controller trait is the easiest way to generate a pdf:

<?php

namespace AppBundle\Controller;

use Massive\Bundle\PdfBundle\Controller\RenderPdfTrait;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;

class YourController extends Controller
{
    use RenderPdfTrait;

    public function pdfAction(Request $request): Response
    {
        return $this->renderPdf(
            '@pdfs/your.html.twig',
            [
                'parameter' => 'hello'
            ],
            $request->getRequestFormat()
        );
    }
}

Register the route with default _format as pdf:

    <route id="your.pdf" path="/your.{_format}">
        <default key="_controller">AppBundle:Your:pdf</default>
        <default key="_format">pdf</default>
    </route>

Now you can access the pdf with /your or use /your.html to get a html response (good for development).

Generate Pdf

/** @var \Massive\Bundle\PdfBundle\Pdf\PdfFactory $pdfFactory */
$pdfFactory = $this->get('massive_pdf.pdf_factory'); // get the service or inject it in your services configuration
$pdf = $pdfFactory->create('pdf.html.twig');

Embedding local assets

The local_asset avoids doing a http request by using file:// instead of https:// for performance improvement:

<img src="{{ local_asset('/images/image.jpg') }}" alt="Local Asset">

This will only work when $request->getRequestFormat() will return pdf.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • PHP 100.0%
Morty Proxy This is a proxified and sanitized view of the page, visit original site.