ok
Direktori : /home2/selectio/www/limpiar.in.net/vendor/niklasravnsborg/laravel-pdf/src/LaravelPdf/ |
Current File : //home2/selectio/www/limpiar.in.net/vendor/niklasravnsborg/laravel-pdf/src/LaravelPdf/Pdf.php |
<?php namespace niklasravnsborg\LaravelPdf; use Config; use Mpdf; /** * Laravel PDF: mPDF wrapper for Laravel 5 * * @package laravel-pdf * @author Niklas Ravnsborg-Gjertsen */ class Pdf { protected $config = []; public function __construct($html = '', $config = []) { $this->config = $config; // @see https://mpdf.github.io/reference/mpdf-functions/construct.html $mpdf_config = [ 'mode' => $this->getConfig('mode'), // Mode of the document. 'format' => $this->getConfig('format'), // Can be specified either as a pre-defined page size, or as an array of width and height in millimetres 'default_font_size' => $this->getConfig('default_font_size'), // Sets the default document font size in points (pt). 'default_font' => $this->getConfig('default_font'), // Sets the default font-family for the new document. 'margin_left' => $this->getConfig('margin_left'), // Set the page margins for the new document. 'margin_right' => $this->getConfig('margin_right'), // Set the page margins for the new document. 'margin_top' => $this->getConfig('margin_top'), // Set the page margins for the new document. 'margin_bottom' => $this->getConfig('margin_bottom'), // Set the page margins for the new document. 'margin_header' => $this->getConfig('margin_header'), // Set the page margins for the new document. 'margin_footer' => $this->getConfig('margin_footer'), // Set the page margins for the new document. 'orientation' => $this->getConfig('orientation'), // This attribute specifies the default page orientation of the new document if format is defined as an array. This value will be ignored if format is a string value. 'tempDir' => $this->getConfig('tempDir') // temporary directory ]; // Handle custom fonts $mpdf_config = $this->addCustomFontsConfig($mpdf_config); $this->mpdf = new Mpdf\Mpdf($mpdf_config); // If you want to change your document title, // please use the <title> tag. $this->mpdf->SetTitle('Document'); $this->mpdf->SetAuthor ( $this->getConfig('author') ); $this->mpdf->SetCreator ( $this->getConfig('creator') ); $this->mpdf->SetSubject ( $this->getConfig('subject') ); $this->mpdf->SetKeywords ( $this->getConfig('keywords') ); $this->mpdf->SetDisplayMode ( $this->getConfig('display_mode') ); if (!empty($this->getConfig('pdf_a'))) { $this->mpdf->PDFA = $this->getConfig('pdf_a'); // Set the flag whether you want to use the pdfA-1b format $this->mpdf->PDFAauto = $this->getConfig('pdf_a_auto'); // Overrides warnings making changes when possible to force PDFA1-b compliance; } if (!empty($this->getConfig('icc_profile_path'))) { $this->mpdf->ICCProfile = $this->getConfig('icc_profile_path'); // Specify ICC colour profile } if (isset($this->config['instanceConfigurator']) && is_callable(($this->config['instanceConfigurator']))) { $this->config['instanceConfigurator']($this->mpdf); } $this->mpdf->WriteHTML($html); } protected function getConfig($key) { if (isset($this->config[$key])) { return $this->config[$key]; } else { return Config::get('pdf.' . $key); } } protected function addCustomFontsConfig($mpdf_config) { if (!Config::has('pdf.font_path') || !Config::has('pdf.font_data')) { return $mpdf_config; } // Get default font configuration $fontDirs = (new Mpdf\Config\ConfigVariables())->getDefaults()['fontDir']; $fontData = (new Mpdf\Config\FontVariables())->getDefaults()['fontdata']; // Merge default with custom configuration $mpdf_config['fontDir'] = array_merge($fontDirs, [Config::get('pdf.font_path')]); $mpdf_config['fontdata'] = array_merge($fontData, Config::get('pdf.font_data')); return $mpdf_config; } /** * Encrypts and sets the PDF document permissions * * @param array $permisson Permissons e.g.: ['copy', 'print'] * @param string $userPassword User password * @param string $ownerPassword Owner password * @return static * */ public function setProtection($permisson, $userPassword = '', $ownerPassword = '') { if (func_get_args()[2] === NULL) { $ownerPassword = bin2hex(openssl_random_pseudo_bytes(8)); }; return $this->mpdf->SetProtection($permisson, $userPassword, $ownerPassword); } /** * Output the PDF as a string. * * @return string The rendered PDF as string */ public function output() { return $this->mpdf->Output('', 'S'); } /** * Save the PDF to a file * * @param $filename * @return static */ public function save($filename) { return $this->mpdf->Output($filename, 'F'); } /** * Make the PDF downloadable by the user * * @param string $filename * @return \Symfony\Component\HttpFoundation\Response */ public function download($filename = 'document.pdf') { return $this->mpdf->Output($filename, 'D'); } /** * Return a response with the PDF to show in the browser * * @param string $filename * @return \Symfony\Component\HttpFoundation\Response */ public function stream($filename = 'document.pdf') { return $this->mpdf->Output($filename, 'I'); } }