Contributte Pdf
# Contributte\PdfResponse
# Content
# Usage
# 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 \Contributte\PdfResponse\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);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# Save file to server
public function actionPdf()
{
$template = $this->createTemplate();
$template->setFile(__DIR__ . "/path/to/template.latte");
$pdf = new \Contributte\PdfResponse\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
}
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# Attach file to an email
public function actionPdf()
{
$template = $this->createTemplate();
$template->setFile(__DIR__ . "/path/to/template.latte");
$pdf = new \Contributte\PdfResponse\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);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
# Force file to download
public function actionPdf()
{
$template = $this->createTemplate();
$template->setFile(__DIR__ . "/path/to/template.latte");
$pdf = new \Contributte\PdfResponse\PdfResponse($template);
$pdf->setSaveMode(PdfResponse::DOWNLOAD); //default behavior
$this->sendResponse($pdf);
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# Force file to display in a browser
public function actionPdf()
{
$template = $this->createTemplate();
$template->setFile(__DIR__ . "/path/to/template.latte");
$pdf = new \Contributte\PdfResponse\PdfResponse($template);
$pdf->setSaveMode(PdfResponse::INLINE);
$this->sendResponse($pdf);
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# Set a pdf background easily
public function actionPdf()
{
$pdf = new \Contributte\PdfResponse\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);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 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 \Contributte\PdfResponse\PdfResponse($template);
$this->sendResponse($pdf);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# Configuration of custom temp dir for mPDF in PdfResponse
services:
-
factory: Contributte\PdfResponse\PdfResponse
setup:
- $mpdfConfig([tempDir: %tempDir%/mpdf])
1
2
3
4
5
2
3
4
5
and in your PHP code:
/**
* @var \Contributte\PdfResponse\PdfResponse
*/
public $pdfResponse;
public function __construct(\Contributte\PdfResponse\PdfResponse $pdfResponse)
{
$this->pdfResponse = $pdfResponse;
}
public function actionPdf()
{
$template = $this->createTemplate();
$template->setFile(__DIR__ . "/path/to/template.latte");
$this->pdfResponse->setTemplate($template);
$this->pdfResponse->setSaveMode(PdfResponse::INLINE);
$this->sendResponse($this->pdfResponse);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21