URI === null) { require_once 'Zend/Pdf/Exception.php'; throw new Zend_Pdf_Exception('URI action dictionary entry is required'); } } /** * Validate URI * * @param string $uri * @return true * @throws Zend_Pdf_Exception */ protected static function _validateUri($uri) { $scheme = parse_url((string)$uri, PHP_URL_SCHEME); if ($scheme === false || $scheme === null) { require_once 'Zend/Pdf/Exception.php'; throw new Zend_Pdf_Exception('Invalid URI'); } } /** * Create new Zend_Pdf_Action_URI object using specified uri * * @param string $uri The URI to resolve, encoded in 7-bit ASCII * @param boolean $isMap A flag specifying whether to track the mouse position when the URI is resolved * @return Zend_Pdf_Action_URI */ public static function create($uri, $isMap = false) { self::_validateUri($uri); $dictionary = new Zend_Pdf_Element_Dictionary(); $dictionary->Type = new Zend_Pdf_Element_Name('Action'); $dictionary->S = new Zend_Pdf_Element_Name('URI'); $dictionary->Next = null; $dictionary->URI = new Zend_Pdf_Element_String($uri); if ($isMap) { $dictionary->IsMap = new Zend_Pdf_Element_Boolean(true); } return new Zend_Pdf_Action_URI($dictionary, new SplObjectStorage()); } /** * Set URI to resolve * * @param string $uri The uri to resolve, encoded in 7-bit ASCII. * @return Zend_Pdf_Action_URI */ public function setUri($uri) { $this->_validateUri($uri); $this->_actionDictionary->touch(); $this->_actionDictionary->URI = new Zend_Pdf_Element_String($uri); return $this; } /** * Get URI to resolve * * @return string */ public function getUri() { return $this->_actionDictionary->URI->value; } /** * Set IsMap property * * If the IsMap flag is true and the user has triggered the URI action by clicking * an annotation, the coordinates of the mouse position at the time the action is * performed should be transformed from device space to user space and then offset * relative to the upper-left corner of the annotation rectangle. * * @param boolean $isMap A flag specifying whether to track the mouse position when the URI is resolved * @return Zend_Pdf_Action_URI */ public function setIsMap($isMap) { $this->_actionDictionary->touch(); if ($isMap) { $this->_actionDictionary->IsMap = new Zend_Pdf_Element_Boolean(true); } else { $this->_actionDictionary->IsMap = null; } return $this; } /** * Get IsMap property * * If the IsMap flag is true and the user has triggered the URI action by clicking * an annotation, the coordinates of the mouse position at the time the action is * performed should be transformed from device space to user space and then offset * relative to the upper-left corner of the annotation rectangle. * * @return boolean */ public function getIsMap() { return $this->_actionDictionary->IsMap !== null && $this->_actionDictionary->IsMap->value; } }