famelo/pdf

Last activity on 8 August 2020
  • 20
  • 18
  • 40259
composer require famelo/pdf

Provides a quick and simple way to generate a PDF from a Fluid Template through the MPDF library

4.1.0

Provides a quick and simple way to generate a PDF from a Fluid Template through the MPDF library

Version
4.1.0
Type
neos-package
Release Date
12.08.2020 08:41:17
Source
git
Distribution
zip
Requires
Requires (dev)
None
Suggest
Provides
None
Conflicts
None
Replaces
None
6550f64560861f90ab47df9397f1f10ba22d3976

Famelo.PDF

Scrutinizer Code Quality

This package provides a quick and simple way to generate a PDF from a Fluid Template through the MPDF library

Example:

$document = new \Famelo\PDF\Document('My.Package:SomeDocument');
$document->assign('someVariable', 'foobar');

// Trigger a Download and exit
$document->download('SomeDocument ' . date('d.m.Y') . '.pdf');

// Show the document inline and exit
$document->send();

// Save the document to a local file
$document->save('/Some/Path/SomeDocument ' . date('d.m.Y') . '.pdf');

This example will render a template located at 'resource://My.Package/Private/Documents/SomeDocument.html and convert it to PDF.

Page Format and orientation

By default pages will be rendered as a A4 Portrait. You can choose another format/orientation like this:

// set format to A5 Portrait
$document = new \Famelo\PDF\Document('My.Package:SomeDocument', 'A5');

// set format to an A4 Landscape
$document->setFormat('A4-L');

// set format to 100mm x 200mm
$document->setFormat(array(100, 200));

The MPDF library supports different page sizes with these keywords or an array containing 2 values for width + height:

  • A0 - A10
  • B0 - B10
  • C0 - C10
  • 4A0
  • 2A0
  • RA0 - RA4
  • SRA0 - SRA4
  • Letter
  • Legal
  • Executive
  • Folio
  • Demy
  • Royal
  • Ledger
  • Tabloid*

All of the above values can be suffixed with "-L" to force a Landscape page orientation document e.g. "A4-L". If format is defined as a string, the final orientation parameter will be ignored.

*Ledger and Tabloid are standard formats with the same page size but different orientation (Ledger is landscape, and Tabloid is portrait). mPDF treats these identically; if you wish to use Ledger, you should specify "Ledger-L" for landscape.

Page numbering in Fluid

If you want to use mPDFs page numbering variables like {PAGENO} or {nbpg} you have to wrap them in a CDATA section, to keep Fluid from interpreting them as variables.

PDF Generator Implementation

By default this Library uses the MPDF library to generate the PDFs. But you can change the defaultGenerator through the Settings.yaml like this:

Famelo:
  PDF:
    # Generator using wkhtmltopdf through knplabs/knp-snappy
    DefaultGenerator: '\Famelo\PDF\Generator\WebkitGenerator'
    DefaultGeneratorOptions:
      Binary: '/usr/local/bin/wkhtmltopdf'

Feel free to create and use a generator for your favorite PDF Library And send me a Pull-Request if you think others might like to use it :)

The content of the readme is provided by Github