Skip to content
PDF response extension for Nette Framework
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src Support for nette 3.0 and php 7.3 (#26) Jun 4, 2019
tests
.gitattributes added travis testing Jul 22, 2014
.gitignore
.travis.yml
composer.json Update composer.json Jun 5, 2019
readme.md readme: examples improved Oct 9, 2016

readme.md

PDF Response for Nette 2

Build Status Latest Stable Version Total Downloads

  • sends template as PDF output using mPDF library
  • works with Nette v2.2+
  • requires PHP 5.4 or higher

Install

Installation via Composer.

composer require joseki/pdf-response ">= 2.1"

How to prepare PDF from template

// in a Presenter
public function actionPdf()
{
    $template = $this->createTemplate();
    $template->setFile(__DIR__ . "/path/to/template.latte");
    $template->someValue = 123;
    // Tip: In template to make a new page use <pagebreak>

    $pdf = new \Joseki\Application\Responses\PdfResponse($template);

    // optional
    $pdf->documentTitle = date("Y-m-d") . " My super title"; // creates filename 2012-06-30-my-super-title.pdf
    $pdf->pageFormat = "A4-L"; // wide format
    $pdf->getMPDF()->setFooter("|© www.mysite.com|"); // footer
    
    // do something with $pdf
    $this->sendResponse($pdf);
}

Save file to server

public function actionPdf()
{
    $template = $this->createTemplate();
    $template->setFile(__DIR__ . "/path/to/template.latte");

    $pdf = new \Joseki\Application\Responses\PdfResponse($template);

    $pdf->save(__DIR__ . "/path/to/directory"); // as a filename $this->documentTitle will be used
    $pdf->save(__DIR__ . "/path/to/directory", "filename"); // OR use a custom name
}

Attach file to an email

public function actionPdf()
{
    $template = $this->createTemplate();
    $template->setFile(__DIR__ . "/path/to/template.latte");

    $pdf = new \Joseki\Application\Responses\PdfResponse($template);

    $savedFile = $pdf->save(__DIR__ . "/path/to/directory");
    $mail = new Nette\Mail\Message;
    $mail->addTo("john@doe.com");
    $mail->addAttachment($savedFile);
    $mailer = new SendmailMailer();
    $mailer->send($mail);
}

Force file to download

public function actionPdf()
{
    $template = $this->createTemplate();
    $template->setFile(__DIR__ . "/path/to/template.latte");

    $pdf = new \Joseki\Application\Responses\PdfResponse($template);
    $pdf->setSaveMode(PdfResponse::DOWNLOAD); //default behavior
    $this->sendResponse($pdf);
}

Force file to display in a browser

public function actionPdf()
{
    $template = $this->createTemplate();
    $template->setFile(__DIR__ . "/path/to/template.latte");

    $pdf = new \Joseki\Application\Responses\PdfResponse($template);
    $pdf->setSaveMode(PdfResponse::INLINE);
    $this->sendResponse($pdf);
}

Set a pdf background easily

public function actionPdf()
{
    $pdf = new Joseki\Application\Responses\PdfResponse('');
    $pdf->setBackgroundTemplate(__DIR__ . "/path/to/an/existing/file.pdf");

    // to write into an existing document use the following statements
    $mpdf = $pdf->getMPDF();
    $mpdf->WriteFixedPosHTML('hello world', 1, 10, 10, 10);

    // to write to another page
    $mpdf->AddPage();

    // to move to exact page, use
    $mpdf->page = 3; // = move to 3rd page

    $this->sendResponse($pdf);
}

Create pdf with latte only

public function actionPdf()
{
    $latte = new Latte\Engine;
    $latte->setTempDirectory('/path/to/cache');
    $latte->addFilter('money', function($val) { return ...; }); // formerly registerHelper()

    $latte->onCompile[] = function($latte) {
        $latte->addMacro(...); // when you want add some own macros, see http://goo.gl/d5A1u2
    };

    $template = $latte->renderToString(__DIR__ . "/path/to/template.latte");

    $pdf = new \Joseki\Application\Responses\PdfResponse($template);
    $this->sendResponse($pdf);
}

See also

You can’t perform that action at this time.