Exemple #1
0
 /**
  * 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());
     }
 }
Exemple #2
0
 /**
  * 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);
 }