| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 | <?phpnamespace PhpOffice\PhpSpreadsheet\Writer\Pdf;use PhpOffice\PhpSpreadsheet\Worksheet\PageSetup;use PhpOffice\PhpSpreadsheet\Writer\Pdf;class Tcpdf extends Pdf{    /**     * Gets the implementation of external PDF library that should be used.     *     * @param string $orientation Page orientation     * @param string $unit Unit measure     * @param string $paperSize Paper size     *     * @return \TCPDF implementation     */    protected function createExternalWriterInstance($orientation, $unit, $paperSize)    {        return new \TCPDF($orientation, $unit, $paperSize);    }    /**     * Save Spreadsheet to file.     *     * @param string $pFilename Name of the file to save as     *     * @throws \PhpOffice\PhpSpreadsheet\Writer\Exception     */    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 ($this->getSheetIndex() === null) {            $orientation = ($this->spreadsheet->getSheet(0)->getPageSetup()->getOrientation()                == PageSetup::ORIENTATION_LANDSCAPE) ? 'L' : 'P';            $printPaperSize = $this->spreadsheet->getSheet(0)->getPageSetup()->getPaperSize();            $printMargins = $this->spreadsheet->getSheet(0)->getPageMargins();        } else {            $orientation = ($this->spreadsheet->getSheet($this->getSheetIndex())->getPageSetup()->getOrientation()                == PageSetup::ORIENTATION_LANDSCAPE) ? 'L' : 'P';            $printPaperSize = $this->spreadsheet->getSheet($this->getSheetIndex())->getPageSetup()->getPaperSize();            $printMargins = $this->spreadsheet->getSheet($this->getSheetIndex())->getPageMargins();        }        //  Override Page Orientation        if ($this->getOrientation() !== null) {            $orientation = ($this->getOrientation() == PageSetup::ORIENTATION_LANDSCAPE)                ? 'L'                : 'P';        }        //  Override Paper Size        if ($this->getPaperSize() !== null) {            $printPaperSize = $this->getPaperSize();        }        if (isset(self::$paperSizes[$printPaperSize])) {            $paperSize = self::$paperSizes[$printPaperSize];        }        //  Create PDF        $pdf = $this->createExternalWriterInstance($orientation, 'pt', $paperSize);        $pdf->setFontSubsetting(false);        //    Set margins, converting inches to points (using 72 dpi)        $pdf->SetMargins($printMargins->getLeft() * 72, $printMargins->getTop() * 72, $printMargins->getRight() * 72);        $pdf->SetAutoPageBreak(true, $printMargins->getBottom() * 72);        $pdf->setPrintHeader(false);        $pdf->setPrintFooter(false);        $pdf->AddPage();        //  Set the appropriate font        $pdf->SetFont($this->getFont());        $pdf->writeHTML(            $this->generateHTMLHeader(false) .            $this->generateSheetData() .            $this->generateHTMLFooter()        );        //  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());        //  Write to file        fwrite($fileHandle, $pdf->output($pFilename, 'S'));        parent::restoreStateAfterSave($fileHandle);    }}
 |