Exemplo n.º 1
0
 /**
  * Draw an image at the specified position on the page.
  *
  * @param Zend_Pdf_Image $image
  * @param float $x1
  * @param float $y1
  * @param float $x2
  * @param float $y2
  * @return Zend_Pdf_Page
  */
 public function drawImage(Zend_Pdf_Resource_Image $image, $x1, $y1, $x2, $y2)
 {
     $this->_addProcSet('PDF');
     $imageName = $this->_attachResource('XObject', $image);
     $imageNameObj = new Zend_Pdf_Element_Name($imageName);
     $x1Obj = new Zend_Pdf_Element_Numeric($x1);
     $y1Obj = new Zend_Pdf_Element_Numeric($y1);
     $widthObj = new Zend_Pdf_Element_Numeric($x2 - $x1);
     $heightObj = new Zend_Pdf_Element_Numeric($y2 - $y1);
     $this->_contents .= "q\n" . '1 0 0 1 ' . $x1Obj->toString() . ' ' . $y1Obj->toString() . " cm\n" . $widthObj->toString() . ' 0 0 ' . $heightObj->toString() . " 0 0 cm\n" . $imageNameObj->toString() . " Do\n" . "Q\n";
     return $this;
 }
Exemplo n.º 2
0
 /**
  * Read elemental object from a PDF stream
  *
  * @return Zend_Pdf_Element
  * @throws Zend_Pdf_Exception
  */
 public function readElement($nextLexeme = null)
 {
     if ($nextLexeme === null) {
         $nextLexeme = $this->readLexeme();
     }
     /**
      * Note: readElement() method is a public method and could be invoked from other classes.
      * If readElement() is used not by Zend_Pdf_StringParser::getObject() method, then we should not care
      * about _elements member management.
      */
     switch ($nextLexeme) {
         case '(':
             return $this->_elements[] = $this->_readString();
         case '<':
             return $this->_elements[] = $this->_readBinaryString();
         case '/':
             return $this->_elements[] = new Zend_Pdf_Element_Name(Zend_Pdf_Element_Name::unescape($this->readLexeme()));
         case '[':
             return $this->_elements[] = $this->_readArray();
         case '<<':
             return $this->_elements[] = $this->_readDictionary();
         case ')':
             // fall through to next case
         // fall through to next case
         case '>':
             // fall through to next case
         // fall through to next case
         case ']':
             // fall through to next case
         // fall through to next case
         case '>>':
             // fall through to next case
         // fall through to next case
         case '{':
             // fall through to next case
         // fall through to next case
         case '}':
             require_once 'Zend/Pdf/Exception.php';
             throw new Zend_Pdf_Exception(sprintf('PDF file syntax error. Offset - 0x%X.', $this->offset));
         default:
             if (strcasecmp($nextLexeme, 'true') == 0) {
                 return $this->_elements[] = new Zend_Pdf_Element_Boolean(true);
             } else {
                 if (strcasecmp($nextLexeme, 'false') == 0) {
                     return $this->_elements[] = new Zend_Pdf_Element_Boolean(false);
                 } else {
                     if (strcasecmp($nextLexeme, 'null') == 0) {
                         return $this->_elements[] = new Zend_Pdf_Element_Null();
                     }
                 }
             }
             $ref = $this->_readReference($nextLexeme);
             if ($ref !== null) {
                 return $this->_elements[] = $ref;
             }
             return $this->_elements[] = $this->_readNumeric($nextLexeme);
     }
 }
Exemplo n.º 3
0
 /**
  * Return object as string
  *
  * @param Zend_Pdf_Factory $factory
  * @return string
  */
 public function toString($factory = null)
 {
     $outStr = '<<';
     $lastNL = 0;
     foreach ($this->_items as $name => $element) {
         if (!is_object($element)) {
             // require_once 'Zend/Pdf/Exception.php';
             throw new Zend_Pdf_Exception('Wrong data');
         }
         if (strlen($outStr) - $lastNL > 128) {
             $outStr .= "\n";
             $lastNL = strlen($outStr);
         }
         $nameObj = new Zend_Pdf_Element_Name($name);
         $outStr .= $nameObj->toString($factory) . ' ' . $element->toString($factory) . ' ';
     }
     $outStr .= '>>';
     return $outStr;
 }
Exemplo n.º 4
0
 public function testUnescape()
 {
     $this->assertEquals(Zend_Pdf_Element_Name::unescape('My#20Cool#20Name#28#29'), 'My Cool Name()');
 }
Exemplo n.º 5
0
 /**
  * Read elemental object from a PDF stream
  *
  * @return Zend_Pdf_Element
  * @throws Zend_Pdf_Exception
  */
 private function _readElementalObject($nextLexeme = null)
 {
     if ($nextLexeme === null) {
         $nextLexeme = $this->_readLexeme();
     }
     switch ($nextLexeme) {
         case '(':
             return $this->_elements[] = $this->_readString();
         case '<':
             return $this->_elements[] = $this->_readBinaryString();
         case '/':
             return $this->_elements[] = new Zend_Pdf_Element_Name(Zend_Pdf_Element_Name::unescape($this->_readLexeme()));
         case '[':
             return $this->_elements[] = $this->_readArray();
         case '<<':
             return $this->_elements[] = $this->_readDictionary();
         case ')':
             // fall through to next case
         // fall through to next case
         case '>':
             // fall through to next case
         // fall through to next case
         case ']':
             // fall through to next case
         // fall through to next case
         case '>>':
             // fall through to next case
         // fall through to next case
         case '{':
             // fall through to next case
         // fall through to next case
         case '}':
             throw new Zend_Pdf_Exception(sprintf('PDF file syntax error. Offset - 0x%X.', $this->_current));
         default:
             if (strcasecmp($nextLexeme, 'true') == 0) {
                 return $this->_elements[] = new Zend_Pdf_Element_Boolean(true);
             } else {
                 if (strcasecmp($nextLexeme, 'false') == 0) {
                     return $this->_elements[] = new Zend_Pdf_Element_Boolean(false);
                 } else {
                     if (strcasecmp($nextLexeme, 'null') == 0) {
                         return $this->_elements[] = new Zend_Pdf_Element_Null();
                     }
                 }
             }
             $ref = $this->_readReference($nextLexeme);
             if ($ref !== null) {
                 return $this->_elements[] = $ref;
             }
             return $this->_elements[] = $this->_readNumeric($nextLexeme);
     }
 }
Exemplo n.º 6
0
 /**
  * Return object as string
  *
  * @param Zend_Pdf_Factory $factory
  * @return string
  */
 public function toString($factory = null)
 {
     $outStr = '<<';
     $lastNL = 0;
     foreach ($this->_items as $name => $element) {
         if (strlen($outStr) - $lastNL > 128) {
             $outStr .= "\n";
             $lastNL = strlen($outStr);
         }
         $nameObj = new Zend_Pdf_Element_Name($name);
         $outStr .= $nameObj->toString($factory) . ' ' . $element->toString($factory) . ' ';
     }
     $outStr .= '>>';
     return $outStr;
 }