You are here

public function PHPExcel_Writer_PDF_tcPDF::save in Loft Data Grids 7.2

Same name and namespace in other branches
  1. 6.2 vendor/phpoffice/phpexcel/Classes/PHPExcel/Writer/PDF/tcPDF.php \PHPExcel_Writer_PDF_tcPDF::save()

Save PHPExcel to file

Parameters

string $pFilename Name of the file to save as: @throws PHPExcel_Writer_Exception

Overrides PHPExcel_Writer_HTML::save

File

vendor/phpoffice/phpexcel/Classes/PHPExcel/Writer/PDF/tcPDF.php, line 63

Class

PHPExcel_Writer_PDF_tcPDF
PHPExcel_Writer_PDF_tcPDF

Code

public function save($pFilename = NULL) {
  $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 (is_null($this
    ->getSheetIndex())) {
    $orientation = $this->_phpExcel
      ->getSheet(0)
      ->getPageSetup()
      ->getOrientation() == PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE ? 'L' : 'P';
    $printPaperSize = $this->_phpExcel
      ->getSheet(0)
      ->getPageSetup()
      ->getPaperSize();
    $printMargins = $this->_phpExcel
      ->getSheet(0)
      ->getPageMargins();
  }
  else {
    $orientation = $this->_phpExcel
      ->getSheet($this
      ->getSheetIndex())
      ->getPageSetup()
      ->getOrientation() == PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE ? 'L' : 'P';
    $printPaperSize = $this->_phpExcel
      ->getSheet($this
      ->getSheetIndex())
      ->getPageSetup()
      ->getPaperSize();
    $printMargins = $this->_phpExcel
      ->getSheet($this
      ->getSheetIndex())
      ->getPageMargins();
  }

  //  Override Page Orientation
  if (!is_null($this
    ->getOrientation())) {
    $orientation = $this
      ->getOrientation() == PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE ? 'L' : 'P';
  }

  //  Override Paper Size
  if (!is_null($this
    ->getPaperSize())) {
    $printPaperSize = $this
      ->getPaperSize();
  }
  if (isset(self::$_paperSizes[$printPaperSize])) {
    $paperSize = self::$_paperSizes[$printPaperSize];
  }

  //  Create PDF
  $pdf = new TCPDF($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->_phpExcel
    ->getProperties()
    ->getTitle());
  $pdf
    ->SetAuthor($this->_phpExcel
    ->getProperties()
    ->getCreator());
  $pdf
    ->SetSubject($this->_phpExcel
    ->getProperties()
    ->getSubject());
  $pdf
    ->SetKeywords($this->_phpExcel
    ->getProperties()
    ->getKeywords());
  $pdf
    ->SetCreator($this->_phpExcel
    ->getProperties()
    ->getCreator());

  //  Write to file
  fwrite($fileHandle, $pdf
    ->output($pFilename, 'S'));
  parent::restoreStateAfterSave($fileHandle);
}