diff --git a/.docs/README.md b/.docs/README.md deleted file mode 100644 index af5b9d6..0000000 --- a/.docs/README.md +++ /dev/null @@ -1,214 +0,0 @@ -# Contributte\PdfResponse - -## Content - -- [Usage - how use it](#usage) - - [How to prepare PDF from template](#how-to-prepare-pdf-from-template) - - [Save file to server](#save-file-to-server) - - [Attach file to an email](#attach-file-to-an-email) - - [Force file to download](#force-file-to-download) - - [Force file to display in a browser](#force-file-to-display-in-a-browser) - - [Set a pdf background easily](#set-a-pdf-background-easily) - - [Create pdf with latte only](#create-pdf-with-latte-only) - - [Configuration of custom fonts for mPDF](#configuration-of-custom-fonts-for-mpdf) - - [Configuration of custom temp dir for mPDF in PdfResponse](#configuration-of-custom-temp-dir-for-mpdf-in-pdfresponse) - -## Usage - -### How to prepare PDF from template - -```php -use Contributte\PdfResponse\PdfResponse; - -// 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 - - $pdf = new 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 - -```php -use Contributte\PdfResponse\PdfResponse; - -public function actionPdf() -{ - $template = $this->createTemplate(); - $template->setFile(__DIR__ . "/path/to/template.latte"); - - $pdf = new 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 - -```php -use Contributte\PdfResponse\PdfResponse; - -public function actionPdf() -{ - $template = $this->createTemplate(); - $template->setFile(__DIR__ . "/path/to/template.latte"); - - $pdf = new 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 - -```php -use Contributte\PdfResponse\PdfResponse; - -public function actionPdf() -{ - $template = $this->createTemplate(); - $template->setFile(__DIR__ . "/path/to/template.latte"); - - $pdf = new PdfResponse($template); - $pdf->setSaveMode(PdfResponse::DOWNLOAD); //default behavior - $this->sendResponse($pdf); -} -``` - -### Force file to display in a browser - -```php -use Contributte\PdfResponse\PdfResponse; - -public function actionPdf() -{ - $template = $this->createTemplate(); - $template->setFile(__DIR__ . "/path/to/template.latte"); - - $pdf = new PdfResponse($template); - $pdf->setSaveMode(PdfResponse::INLINE); - $this->sendResponse($pdf); -} -``` - -### Set a pdf background easily - -```php -use Contributte\PdfResponse\PdfResponse; - -public function actionPdf() -{ - $pdf = new 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 - -```php -use Contributte\PdfResponse\PdfResponse; - -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 PdfResponse($template); - $this->sendResponse($pdf); -} -``` - -### Configuration of custom fonts for mPDF - -```php -use Contributte\PdfResponse\PdfResponse; - -public function actionPdf() -{ - $template = $this->createTemplate(); - $template->setFile(__DIR__ . "/path/to/template.latte"); - - $pdf = new PdfResponse($template); - $pdf->mpdfConfig = [ - 'fontDir' => [__DIR__ . '/fonts'], - 'fontdata' => [ - 'poppins' => [ - 'R' => 'Poppins-Regular.ttf', - 'B' => 'Poppins-Bold.ttf', - ], - ], - 'default_font' => 'poppins', - ]; - - $this->sendResponse($pdf); -} -``` - -### Configuration of custom temp dir for mPDF in PdfResponse - -```neon -services: - - Contributte\PdfResponse\PdfResponseFactory([tempDir: %tempDir%/pdf]) -``` - -and in your PHP code: - -```php -use Contributte\PdfResponse\PdfResponse; - -public function __construct( - private readonly PdfResponseFactory $pdfResponseFactory -) -{ -} - -public function actionPdf() -{ - $template = $this->createTemplate(); - $template->setFile(__DIR__ . "/path/to/template.latte"); - - $response = $this->pdfResponseFactory->createResponse(); - $response->setTemplate($template); - $response->setSaveMode(PdfResponse::INLINE); - - $this->sendResponse($response); -} -``` diff --git a/README.md b/README.md index 1fb5ddf..3c74ffc 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,16 @@ Website 🚀 contributte.org | Contact 👨🏻‍💻 f3l1x.io | Twitter 🐦 @contributte

-## Usage +Pdf response extension for Nette Framework. + +## Versions + +| State | Version | Branch | PHP | +|-------------|---------|----------|--------| +| dev | `^7.1` | `master` | `8.1+` | +| stable | `^7.0` | `master` | `8.1+` | + +## Installation To install latest version of `contributte/pdf` use [Composer](https://getcomposer.org/). @@ -26,17 +35,205 @@ To install latest version of `contributte/pdf` use [Composer](https://getcompose composer require contributte/pdf ``` -## Documentation +## Usage -For details on how to use this package, check out our [documentation](.docs). +### How to prepare PDF from template +```php +use Contributte\PdfResponse\PdfResponse; -## Versions +// in a Presenter +public function actionPdf() +{ + $template = $this->createTemplate(); + $template->setFile(__DIR__ . "/path/to/template.latte"); + $template->someValue = 123; + // Tip: use in the template to start a new page. -| State | Version | Branch | PHP | -|-------------|---------|----------|--------| -| dev | `^7.1` | `master` | `8.1+` | -| stable | `^7.0` | `master` | `8.1+` | + $pdf = new PdfResponse($template); + + // optional + $pdf->documentTitle = date("Y-m-d") . " Monthly report"; // creates filename 2012-06-30-monthly-report.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 + +```php +use Contributte\PdfResponse\PdfResponse; + +public function actionPdf() +{ + $template = $this->createTemplate(); + $template->setFile(__DIR__ . "/path/to/template.latte"); + + $pdf = new 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 + +```php +use Contributte\PdfResponse\PdfResponse; + +public function actionPdf() +{ + $template = $this->createTemplate(); + $template->setFile(__DIR__ . "/path/to/template.latte"); + + $pdf = new 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 + +```php +use Contributte\PdfResponse\PdfResponse; + +public function actionPdf() +{ + $template = $this->createTemplate(); + $template->setFile(__DIR__ . "/path/to/template.latte"); + + $pdf = new PdfResponse($template); + $pdf->setSaveMode(PdfResponse::DOWNLOAD); //default behavior + $this->sendResponse($pdf); +} +``` + +### Force file to display in a browser + +```php +use Contributte\PdfResponse\PdfResponse; + +public function actionPdf() +{ + $template = $this->createTemplate(); + $template->setFile(__DIR__ . "/path/to/template.latte"); + + $pdf = new PdfResponse($template); + $pdf->setSaveMode(PdfResponse::INLINE); + $this->sendResponse($pdf); +} +``` + +### Set a PDF background + +```php +use Contributte\PdfResponse\PdfResponse; + +public function actionPdf() +{ + $pdf = new 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 + +```php +use Contributte\PdfResponse\PdfResponse; + +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 PdfResponse($template); + $this->sendResponse($pdf); +} +``` + +### Configuration of custom fonts for mPDF + +```php +use Contributte\PdfResponse\PdfResponse; + +public function actionPdf() +{ + $template = $this->createTemplate(); + $template->setFile(__DIR__ . "/path/to/template.latte"); + + $pdf = new PdfResponse($template); + $pdf->mpdfConfig = [ + 'fontDir' => [__DIR__ . '/fonts'], + 'fontdata' => [ + 'poppins' => [ + 'R' => 'Poppins-Regular.ttf', + 'B' => 'Poppins-Bold.ttf', + ], + ], + 'default_font' => 'poppins', + ]; + + $this->sendResponse($pdf); +} +``` + +### Configuration of custom temp dir for mPDF in PdfResponse + +```neon +services: + - Contributte\PdfResponse\PdfResponseFactory([tempDir: %tempDir%/pdf]) +``` + +and in your PHP code: + +```php +use Contributte\PdfResponse\PdfResponse; + +public function __construct( + private readonly PdfResponseFactory $pdfResponseFactory +) +{ +} + +public function actionPdf() +{ + $template = $this->createTemplate(); + $template->setFile(__DIR__ . "/path/to/template.latte"); + + $response = $this->pdfResponseFactory->createResponse(); + $response->setTemplate($template); + $response->setSaveMode(PdfResponse::INLINE); + + $this->sendResponse($response); +} +``` ## Development