From dd4f7983bca03ccf979f6f726708ee5956ef879d Mon Sep 17 00:00:00 2001 From: VictorAlencar Date: Wed, 20 May 2015 10:58:46 -0300 Subject: [PATCH 1/3] Added total page count --- README.md | 5 ++ src/DOMPDFModule/View/Model/PdfModel.php | 4 +- .../View/Renderer/PdfRenderer.php | 56 +++++++++++++++++++ 3 files changed, 64 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 1c599cb..0774169 100644 --- a/README.md +++ b/README.md @@ -54,7 +54,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/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; + } + } } From cc6d14b4dc60b19fce4c2125a9385a16d4006c80 Mon Sep 17 00:00:00 2001 From: Victor Hugo Date: Mon, 31 Aug 2015 11:22:27 -0300 Subject: [PATCH 2/3] Update composer.json and README.md --- README.md | 4 +++- composer.json | 6 +++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 0774169..da147df 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" + "victorAlencar/dompdf-module": "dev-master" } } ``` diff --git a/composer.json b/composer.json index 861727b..70b68fb 100644 --- a/composer.json +++ b/composer.json @@ -1,9 +1,9 @@ { - "name": "dino/dompdf-module", + "name": "victorAlencar/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": [ { From 454db0ee0e1def6f0de535e8f81e3b9af8a97187 Mon Sep 17 00:00:00 2001 From: Victor Hugo Date: Mon, 31 Aug 2015 11:26:18 -0300 Subject: [PATCH 3/3] Update package vendor --- README.md | 2 +- composer.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index da147df..b2a03fd 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ PHP Composer, please visit the official [PHP Composer site](http://getcomposer.o ```json { "require": { - "victorAlencar/dompdf-module": "dev-master" + "victor-alencar/dompdf-module": "dev-master" } } ``` diff --git a/composer.json b/composer.json index 70b68fb..449f577 100644 --- a/composer.json +++ b/composer.json @@ -1,5 +1,5 @@ { - "name": "victorAlencar/dompdf-module", + "name": "victor-alencar/dompdf-module", "type": "library", "description": "A Zend Framework 2 module for incorporating DOMPDF support. Based on https://github.com/raykolbe/DOMPDFModule", "keywords": ["pdf","dompdf", "zf2"],