Completed
Push — master ( a79865...f1a019 )
by Adrien
09:59
created

Dompdf   A

Complexity

Total Complexity 10

Size/Duplication

Total Lines 69
Duplicated Lines 0 %

Test Coverage

Coverage 76.67%

Importance

Changes 0
Metric Value
eloc 30
dl 0
loc 69
ccs 23
cts 30
cp 0.7667
rs 10
c 0
b 0
f 0
wmc 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A createExternalWriterInstance() 0 3 1
B save() 0 50 9
1
<?php
2
3
namespace PhpOffice\PhpSpreadsheet\Writer\Pdf;
4
5
use PhpOffice\PhpSpreadsheet\Worksheet\PageSetup;
6
use PhpOffice\PhpSpreadsheet\Writer\Pdf;
7
8
class Dompdf extends Pdf
9
{
10
    /**
11
     * Gets the implementation of external PDF library that should be used.
12
     *
13
     * @return \Dompdf\Dompdf implementation
14
     */
15 2
    protected function createExternalWriterInstance()
16
    {
17 2
        return new \Dompdf\Dompdf();
18
    }
19
20
    /**
21
     * Save Spreadsheet to file.
22
     *
23
     * @param string $pFilename Name of the file to save as
24
     *
25
     * @throws \PhpOffice\PhpSpreadsheet\Writer\Exception
26
     */
27 2
    public function save($pFilename)
28
    {
29 2
        $fileHandle = parent::prepareForSave($pFilename);
30
31
        //  Default PDF paper size
32 2
        $paperSize = 'LETTER'; //    Letter    (8.5 in. by 11 in.)
33
34
        //  Check for paper size and page orientation
35 2
        if ($this->getSheetIndex() === null) {
36
            $orientation = ($this->spreadsheet->getSheet(0)->getPageSetup()->getOrientation()
37
                == PageSetup::ORIENTATION_LANDSCAPE) ? 'L' : 'P';
38
            $printPaperSize = $this->spreadsheet->getSheet(0)->getPageSetup()->getPaperSize();
39
        } else {
40 2
            $orientation = ($this->spreadsheet->getSheet($this->getSheetIndex())->getPageSetup()->getOrientation()
41 2
                == PageSetup::ORIENTATION_LANDSCAPE) ? 'L' : 'P';
42 2
            $printPaperSize = $this->spreadsheet->getSheet($this->getSheetIndex())->getPageSetup()->getPaperSize();
43
        }
44
45 2
        $orientation = ($orientation == 'L') ? 'landscape' : 'portrait';
46
47
        //  Override Page Orientation
48 2
        if ($this->getOrientation() !== null) {
49
            $orientation = ($this->getOrientation() == PageSetup::ORIENTATION_DEFAULT)
50
                ? PageSetup::ORIENTATION_PORTRAIT
51
                : $this->getOrientation();
52
        }
53
        //  Override Paper Size
54 2
        if ($this->getPaperSize() !== null) {
55
            $printPaperSize = $this->getPaperSize();
56
        }
57
58 2
        if (isset(self::$paperSizes[$printPaperSize])) {
59 2
            $paperSize = self::$paperSizes[$printPaperSize];
60
        }
61
62
        //  Create PDF
63 2
        $pdf = $this->createExternalWriterInstance();
64 2
        $pdf->setPaper(strtolower($paperSize), $orientation);
65
66 2
        $pdf->loadHtml(
67 2
            $this->generateHTMLHeader(false) .
68 2
            $this->generateSheetData() .
69 2
            $this->generateHTMLFooter()
70
        );
71 2
        $pdf->render();
72
73
        //  Write to file
74 2
        fwrite($fileHandle, $pdf->output());
75
76 2
        parent::restoreStateAfterSave($fileHandle);
77 2
    }
78
}
79