| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 | 
							- <?php
 
- namespace PhpOffice\PhpSpreadsheet\Writer\Pdf;
 
- use PhpOffice\PhpSpreadsheet\Exception as PhpSpreadsheetException;
 
- use PhpOffice\PhpSpreadsheet\Worksheet\PageSetup;
 
- use PhpOffice\PhpSpreadsheet\Writer\Pdf;
 
- class Mpdf extends Pdf
 
- {
 
-     /**
 
-      * Gets the implementation of external PDF library that should be used.
 
-      *
 
-      * @param array $config Configuration array
 
-      *
 
-      * @return \Mpdf\Mpdf implementation
 
-      */
 
-     protected function createExternalWriterInstance($config)
 
-     {
 
-         return new \Mpdf\Mpdf($config);
 
-     }
 
-     /**
 
-      * Save Spreadsheet to file.
 
-      *
 
-      * @param string $pFilename Name of the file to save as
 
-      *
 
-      * @throws \PhpOffice\PhpSpreadsheet\Writer\Exception
 
-      * @throws PhpSpreadsheetException
 
-      */
 
-     public function save($pFilename)
 
-     {
 
-         $fileHandle = parent::prepareForSave($pFilename);
 
-         //  Default PDF paper size
 
-         $paperSize = 'LETTER'; //    Letter    (8.5 in. by 11 in.)
 
-         //  Check for paper size and page orientation
 
-         if (null === $this->getSheetIndex()) {
 
-             $orientation = ($this->spreadsheet->getSheet(0)->getPageSetup()->getOrientation()
 
-                 == PageSetup::ORIENTATION_LANDSCAPE) ? 'L' : 'P';
 
-             $printPaperSize = $this->spreadsheet->getSheet(0)->getPageSetup()->getPaperSize();
 
-         } else {
 
-             $orientation = ($this->spreadsheet->getSheet($this->getSheetIndex())->getPageSetup()->getOrientation()
 
-                 == PageSetup::ORIENTATION_LANDSCAPE) ? 'L' : 'P';
 
-             $printPaperSize = $this->spreadsheet->getSheet($this->getSheetIndex())->getPageSetup()->getPaperSize();
 
-         }
 
-         $this->setOrientation($orientation);
 
-         //  Override Page Orientation
 
-         if (null !== $this->getOrientation()) {
 
-             $orientation = ($this->getOrientation() == PageSetup::ORIENTATION_DEFAULT)
 
-                 ? PageSetup::ORIENTATION_PORTRAIT
 
-                 : $this->getOrientation();
 
-         }
 
-         $orientation = strtoupper($orientation);
 
-         //  Override Paper Size
 
-         if (null !== $this->getPaperSize()) {
 
-             $printPaperSize = $this->getPaperSize();
 
-         }
 
-         if (isset(self::$paperSizes[$printPaperSize])) {
 
-             $paperSize = self::$paperSizes[$printPaperSize];
 
-         }
 
-         //  Create PDF
 
-         $config = ['tempDir' => $this->tempDir];
 
-         $pdf = $this->createExternalWriterInstance($config);
 
-         $ortmp = $orientation;
 
-         $pdf->_setPageSize(strtoupper($paperSize), $ortmp);
 
-         $pdf->DefOrientation = $orientation;
 
-         $pdf->AddPageByArray([
 
-             'orientation' => $orientation,
 
-             'margin-left' => $this->inchesToMm($this->spreadsheet->getActiveSheet()->getPageMargins()->getLeft()),
 
-             'margin-right' => $this->inchesToMm($this->spreadsheet->getActiveSheet()->getPageMargins()->getRight()),
 
-             'margin-top' => $this->inchesToMm($this->spreadsheet->getActiveSheet()->getPageMargins()->getTop()),
 
-             'margin-bottom' => $this->inchesToMm($this->spreadsheet->getActiveSheet()->getPageMargins()->getBottom()),
 
-         ]);
 
-         //  Document info
 
-         $pdf->SetTitle($this->spreadsheet->getProperties()->getTitle());
 
-         $pdf->SetAuthor($this->spreadsheet->getProperties()->getCreator());
 
-         $pdf->SetSubject($this->spreadsheet->getProperties()->getSubject());
 
-         $pdf->SetKeywords($this->spreadsheet->getProperties()->getKeywords());
 
-         $pdf->SetCreator($this->spreadsheet->getProperties()->getCreator());
 
-         $pdf->WriteHTML($this->generateHTMLHeader(false));
 
-         $html = $this->generateSheetData();
 
-         foreach (\array_chunk(\explode(PHP_EOL, $html), 1000) as $lines) {
 
-             $pdf->WriteHTML(\implode(PHP_EOL, $lines));
 
-         }
 
-         $pdf->WriteHTML($this->generateHTMLFooter());
 
-         //  Write to file
 
-         fwrite($fileHandle, $pdf->Output('', 'S'));
 
-         parent::restoreStateAfterSave($fileHandle);
 
-     }
 
-     /**
 
-      * Convert inches to mm.
 
-      *
 
-      * @param float $inches
 
-      *
 
-      * @return float
 
-      */
 
-     private function inchesToMm($inches)
 
-     {
 
-         return $inches * 25.4;
 
-     }
 
- }
 
 
  |