mkebza/wk-pdf-bundle

Simple wrapper for wkhtmltopdf for symfony

Installs: 943

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 2

Forks: 0

Open Issues: 0

Type:symfony-bundle

v0.4.0 2023-09-03 20:24 UTC

This package is auto-updated.

Last update: 2024-04-03 21:43:58 UTC


README

Applications that use Symfony Flex

Open a command console, enter your project directory and execute:

$ composer require mkebza/wk-pdf-bundle

Applications that don't use Symfony Flex

Step 1: Download the Bundle

Open a command console, enter your project directory and execute the following command to download the latest stable version of this bundle:

$ composer require mkebza/wk-pdf-bundle

This command requires you to have Composer installed globally, as explained in the installation chapter of the Composer documentation.

Step 2: Enable the Bundle

Then, enable the bundle by adding it to the list of registered bundles in the app/AppKernel.php file of your project:

<?php
// app/AppKernel.php

// ...
class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = array(
            // ...
            new MKebza\WkPDF\MKebzaWkPdfBundle(),
        );

        // ...
    }

    // ...
}

How to to use

Generate new PDF document from file and send it as response. Controller function:

public function myAction(PDFRenderer $pdf): Response
{
    $html = $this->renderView('my template');
    // or you can use fromFile(function)
    return $pdf->fromHtml($html, 'a4')->getResponse();
}

As profile can be profile name, array of options (new anonymous profile will be created), PDFRenderingProfile object or null (default profile is used).

Configuration

m_kebza_wk_pdf:
    bin: /usr/local/bin/wkhtmltopdf # Path to your wkhtmltopdf bin, default
    tmp: /var/ # where temporary files are written, this is necessary to be writable directory
    default_profile: a4 # name of default profile
    profiles: # See profiles won
    

Profiles

There are 2 predefined profiles a4, a4_borderless. you can define your own in configuration

m_kebza_wk_pdf:
    profiles:
        myprofile:
            - --lowquality
            - --dpi 96
            - --margin-top 7mm
            - --margin-left 1mm
            - --margin-right 1mm
            - --margin-bottom 1mm
            - --page-size 'A4'
            - --encoding 'UTF-8'

parameters aren't parset nor escaped, they are passed to wkhtmltopdf bin as are. So be careful. Wkhtmltopdf documentation.

if you name your profile with same name as one of default one, yours will overwrite default one.