/**
  * Generate PDF Document
  *
  * @param integer $pdfTemplateId          id of the PDF Template
  * @param array   $substitution           array of substitution values
  * @param string  $mailTplKey             MailTemplate key
  * @param boolean $convertToHtmlEntities  convert input to HTML entities
  *
  * @return mixed array|null
  */
 public function generatePDF($pdfTemplateId, $substitution, $mailTplKey, $convertToHtmlEntities = false)
 {
     if (empty($mailTplKey)) {
         return;
     }
     $repo = $this->cx->getDb()->getEntityManager()->getRepository('\\Cx\\Core_Modules\\Pdf\\Model\\Entity\\PdfTemplate');
     $pdfTemplates = $repo->findOneBy(array('id' => $pdfTemplateId));
     if (!$pdfTemplates || !$pdfTemplates->getHtmlContent()) {
         return;
     }
     $tplContent = $pdfTemplates->getHtmlContent();
     \Cx\Core\MailTemplate\Controller\MailTemplate::substitute($tplContent, $substitution, $convertToHtmlEntities);
     $session = $this->getComponent('Session')->getSession();
     $datetime = $this->getComponent('DateTime')->createDateTimeForUser('now')->format('d_m_Y_h_s_i');
     $title = $mailTplKey . '.pdf';
     $fileName = $mailTplKey . '_' . $datetime . '.pdf';
     $pdf = new \Cx\Core_Modules\Pdf\Model\Entity\PdfDocument();
     $pdf->SetTitle($title);
     $pdf->setContent($tplContent);
     $pdf->setDestination('F');
     $pdf->setFilePath($session->getTempPath() . '/' . $fileName);
     $pdf->Create();
     return array('filePath' => $session->getWebTempPath() . '/' . $fileName, 'fileName' => $title);
 }