diff --git a/README.md b/README.md index 1c599cb..b2a03fd 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ DOMPDFModule ============ +Project based on https://github.com/raykolbe/DOMPDFModule + Master: [![Build Status](https://secure.travis-ci.org/raykolbe/DOMPDFModule.png?branch=master)](http://travis-ci.org/raykolbe/DOMPDFModule) The DOMPDF module integrates the DOMPDF library with Zend Framework 2 with minimal @@ -21,7 +23,7 @@ PHP Composer, please visit the official [PHP Composer site](http://getcomposer.o ```json { "require": { - "dino/dompdf-module": "dev-master" + "victor-alencar/dompdf-module": "dev-master" } } ``` @@ -54,7 +56,12 @@ class ReportController extends AbstractActionController $pdf->setOption('filename', 'monthly-report'); // Triggers PDF download, automatically appends ".pdf" $pdf->setOption('paperSize', 'a4'); // Defaults to "8x11" $pdf->setOption('paperOrientation', 'landscape'); // Defaults to "portrait" + $pdf->setOption('positionPageCounter', 'top-center'); // Defaults to "none". accepted values: "top-left", "top-center", "top-right", "bottom-left", "bottom-center", "bottom-right" + $pdf->setOption('textPageCounter', '{PAGE_NUM}/{PAGE_COUNT}'); // Defaults to "Page {PAGE_NUM} of {PAGE_COUNT}" + // or use array + // $pdf->setOptions(array('filename' => 'monthly-report', 'paperSize' => 'a4', ... )); + // To set view variables $pdf->setVariables(array( 'message' => 'Hello' diff --git a/composer.json b/composer.json index 861727b..449f577 100644 --- a/composer.json +++ b/composer.json @@ -1,9 +1,9 @@ { - "name": "dino/dompdf-module", + "name": "victor-alencar/dompdf-module", "type": "library", - "description": "A Zend Framework 2 module for incorporating DOMPDF support.", + "description": "A Zend Framework 2 module for incorporating DOMPDF support. Based on https://github.com/raykolbe/DOMPDFModule", "keywords": ["pdf","dompdf", "zf2"], - "homepage": "http://raymondkolbe.com", + "homepage": "https://github.com/VictorAlencar/DOMPDFModule", "license": "MIT", "authors": [ { diff --git a/src/DOMPDFModule/View/Model/PdfModel.php b/src/DOMPDFModule/View/Model/PdfModel.php index 1f90bd9..e1c8caa 100644 --- a/src/DOMPDFModule/View/Model/PdfModel.php +++ b/src/DOMPDFModule/View/Model/PdfModel.php @@ -31,7 +31,9 @@ class PdfModel extends ViewModel 'paperSize' => '8x11', 'paperOrientation' => 'portrait', 'basePath' => '/', - 'fileName' => null + 'fileName' => null, + 'positionPageCounter' => 'none', + 'textPageCounter' => 'Page {PAGE_NUM} of {PAGE_COUNT}' ); /** diff --git a/src/DOMPDFModule/View/Renderer/PdfRenderer.php b/src/DOMPDFModule/View/Renderer/PdfRenderer.php index 4947219..d513a6c 100644 --- a/src/DOMPDFModule/View/Renderer/PdfRenderer.php +++ b/src/DOMPDFModule/View/Renderer/PdfRenderer.php @@ -28,6 +28,8 @@ class PdfRenderer implements Renderer private $dompdf = null; private $resolver = null; private $htmlRenderer = null; + private $yPageCounter = null; + private $xPageCounter = null; public function setHtmlRenderer(Renderer $renderer) { @@ -65,6 +67,11 @@ public function render($nameOrModel, $values = null) $paperSize = $nameOrModel->getOption('paperSize'); $paperOrientation = $nameOrModel->getOption('paperOrientation'); $basePath = $nameOrModel->getOption('basePath'); + $textPageCounter = $nameOrModel->getOption('textPageCounter'); + $positionPageCounter = $nameOrModel->getOption('positionPageCounter'); + $fontPageCounter = \Font_Metrics::get_font("helvetica", "normal"); + $sizeFontPageCounter = 9; + $width_text_counter = mb_strwidth($textPageCounter); $pdf = $this->getEngine(); $pdf->set_paper($paperSize, $paperOrientation); @@ -72,6 +79,12 @@ public function render($nameOrModel, $values = null) $pdf->load_html($html); $pdf->render(); + + if($positionPageCounter != 'none') { + $canvas = $pdf->get_canvas(); + $this->calculatePositionCounterPage($positionPageCounter, $canvas->get_width(), $canvas->get_height(), $width_text_counter); + $canvas->page_text($this->xPageCounter, $this->yPageCounter, $textPageCounter, $fontPageCounter, $sizeFontPageCounter); + } return $pdf->output(); } @@ -81,4 +94,47 @@ public function setResolver(Resolver $resolver) $this->resolver = $resolver; return $this; } + + /** + * Calculates coordinates x and y where the text 'textPageCounter' (property) where will be printed + * + * @param string $positionPageCounter The fixed position + * @param integer $page_width The width of page + * @param integer $page_height The height of page + * @param string $width_text The width value calculated of 'textPageCounter' (property) + */ + private function calculatePositionCounterPage($positionPageCounter, $page_width, $page_height, $width_text) + { + switch ($positionPageCounter) + { + case 'top-center': + $this->yPageCounter = 15; + $this->xPageCounter = $page_width/2 - $width_text/2; + break; + case 'top-left': + $this->yPageCounter = 15; + $this->xPageCounter = 15; + break; + case 'top-right': + $this->yPageCounter = 15; + $this->xPageCounter = $page_width - 15 - $width_text; + break; + case 'bottom-left': + $this->yPageCounter = $page_height - 24; + $this->xPageCounter = 15; + break; + case 'bottom-center': + $this->yPageCounter = $page_height - 24; + $this->xPageCounter = $page_width/2 - $width_text/2; + break; + case 'bottom-right': + $this->yPageCounter = $page_height - 24; + $this->xPageCounter = $page_width - 15 - $width_text; + break; + default: + $this->yPageCounter = $page_height - 24; + $this->xPageCounter = $page_width - 15 - $width_text; + break; + } + } }