/** * Create a new template */ public function actionNew() { $form = new \Foundation\Form(); $form->setCSRFToken($this->getCSRFToken()); $form->setAction($this->path("setup/pdftemplates/new")); $field = $form->newField(); $field->setLegend('New Template'); $element = $field->newElement('TextInput', 'title'); $element->setLabel('Title'); $element->addValidator(new \Foundation\Form\Validator\NotEmpty($element)); $element = $field->newElement('FileInput', 'file'); $element->setLabel('PDF Template'); $element->addValidator(new \Foundation\Form\Validator\NotEmpty($element)); $element->addFilter(new \Foundation\Form\Filter\Blob($element)); $form->newButton('submit', 'Create New Template'); $this->setVar('form', $form); if ($input = $form->processInput($this->post)) { $template = new \Jazzee\Entity\PDFTemplate(); $template->setTitle($input->get('title')); $template->setFile($input->get('file')); $pdfLib = new PDFLib(); $pdfLib->set_option("errorpolicy=exception"); $document = $pdfLib->open_pdi_document($template->getTmpFilePath(), ""); $pagecount = $pdfLib->pcos_get_number($document, "length:pages"); $fonts = array(); for ($pageNum = 0; $pageNum < $pagecount; $pageNum++) { $blockcount = $pdfLib->pcos_get_number($document, "length:pages[{$pageNum}]/blocks"); for ($blockNum = 0; $blockNum < $blockcount; $blockNum++) { if ($pdfLib->pcos_get_number($document, "type:pages[{$pageNum}]/blocks[{$blockNum}]/fontname") == 4) { $fontName = $pdfLib->pcos_get_string($document, "pages[{$pageNum}]/blocks[{$blockNum}]/fontname"); if (!array_key_exists($fontName, $fonts)) { $fonts[$fontName] = array(); } $fonts[$fontName][] = $pdfLib->pcos_get_string($document, "pages[{$pageNum}]/blocks[{$blockNum}]/Name"); } } } foreach (array_keys($fonts) as $name) { try { $pdfLib->load_font($name, "unicode", ''); } catch (PDFlibException $e) { $blocks = implode(',', $fonts[$name]); $form->getElementByName('file')->addMessage("Your PDF contains the font '{$name}' in the {$blocks} blocks. This font is not available in unicode and cannot be used here."); return; } } $template->setApplication($this->_application); $this->_application->addTemplate($template); $this->getEntityManager()->persist($template); $this->addMessage('success', 'Template Created Successfully'); $this->getEntityManager()->flush(); $this->redirectPath('setup/pdftemplates/edit/' . $template->getId()); } }
/** * Set the current font * @param string $type */ protected function setFont($type) { $this->pdf->setfont($this->pdf->load_font($this->fonts[$type]['face'], "unicode", ""), $this->fonts[$type]['size']); $this->pdf->setcolor('fillstroke', 'rgb', $this->fonts[$type]['color'][0] / 255, $this->fonts[$type]['color'][1] / 255, $this->fonts[$type]['color'][2] / 255, 0); }